MYSQLでの「CSVファイル」の入出力(インポート、エクスポート)方法について記載しています。
Windows、Linuxのどちらの環境でもファイルパスの記載が変わるだけでコマンドは同一になります。
入力 LOAD DATA INFILE
「,」などで区切られたCSVファイルを用意することにより、MySQLに高速にデータを入力することができます。
文字の囲み文字が「”」のときの使用例です。
囲み文字が必要ないときはENCLOSED BY ‘”‘を外します。
構文
LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名
FIELDS TERMINATED BY ',区切り文字' ENCLOSED BY '"';
コマンド例
LOAD DATA INFILE "/tmp/data.csv" INTO TABLE data FIELDS TERMINATED BY ',' ENCLOSED BY '"';
実際にCSVファイルを入力した例です。
<pre class="wp-block-syntaxhighlighter-code">
<h3>ファイルの中身</h3>
"sasuke","aaa▲aaaa","1234-1234-678",4500
"ziro","bbb▲aaaa","9999-1234-678",4500
"taro","ccc▲aaaa","8888-1234-678",4500
</pre>
実際に打ったコマンド
mysql> LOAD DATA INFILE "c:/data2" INTO TABLE ado FIELDS TERMINATED BY ',' ENCLO
SED BY '"';
Query OK, 3 rows affected (0.03 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT * FROM ado;
+--------+-----------+---------------+-------+
| name | e_mail | tell | maney |
+--------+-----------+---------------+-------+
| sasuke | aaa▲aaaa | 1234-1234-678 | 4500 |
| ziro | bbb▲aaaa | 9999-1234-678 | 4500 |
| taro | ccc▲aaaa | 8888-1234-678 | 4500 |
+--------+-----------+---------------+-------+
3 rows in set (0.00 sec)]]
出力 INTO OUTFILE
「SELECT」を実施する際に、「INTO OUTFILE」コマンドを追記することで、CSVファイルにデータを出力することが出来ます。
OPTIONALLY ENCLOSED BYは省略できましが、その場合文字列の「””」での囲みがなくなります。
構文
SELECT * FROM テーブル名 INTO OUTFILE "ファイル名" FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '囲み文字の指定';
使用例
SELECT * FROM data INTO OUTFILE "/tmp/data.csv" FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';
実際にado表をファイルに出力した例です。
mysql> SELECT * FROM ado;
+--------+-----------+---------------+-------+
| name | e_mail | tell | maney |
+--------+-----------+---------------+-------+
| sasuke | aaa▲aaaa | 1234-1234-678 | 4500 |
| ziro | bbb▲aaaa | 9999-1234-678 | 4500 |
| taro | ccc▲aaaa | 8888-1234-678 | 4500 |
+--------+-----------+---------------+-------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM ado INTO OUTFILE "c:/data2" FIELDS TERMINATED BY ','
-> OPTIONALLY ENCLOSED BY '"';
Query OK, 3 rows affected (0.00 sec)
data2のファイルの中身です。
"sasuke","aaa▲aaaa","1234-1234-678",4500
"ziro","bbb▲aaaa","9999-1234-678",4500
"taro","ccc▲aaaa","8888-1234-678",4500