MySQL で CSV 出力する (MySQL)
MySQL
Published: 2020-11-08

やったこと

MySQL のデータを CSV 出力する方法を2通りやってみます。

確認環境

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.25, for Linux (x86_64) using  EditLine wrapper

調査

mysqldump で CSV を出力する

mysqldump -uroot -p --tab=/tmp --fields-terminated-by=, test bulk_test
[vagrant@localhost ~]$ ls -lh /tmp/
合計 985M
-rw-rw-r--  1 vagrant vagrant 1.6K 11月  7 11:15 2020 bulk_test.sql
-rw-rw-rw-  1 mysql   mysql   981M 11月  7 11:15 2020 bulk_test.txt

mysqldump --help より

-T, –tab=name Create tab-separated textfile for each table to given path. (Create .sql and .txt files.) NOTE: This only works if mysqldump is run on the same machine as the mysqld server.

–fields-escaped-by=name Fields in the output file are escaped by the given character.

mysql で CSV を出力する

mysql> SELECT * FROM bulk_test
    ->     INTO OUTFILE '/tmp/bulk_test2.csv'
    ->   FIELDS TERMINATED BY ','
    -> ENCLOSED BY '"'
    ->  ESCAPED BY '"'
    ->    LINES TERMINATED BY '\r\n';
Query OK, 16777216 rows affected (19.63 sec)
[vagrant@localhost ~]$ ls -lh /tmp/ | grep test2
-rw-rw-rw-  1 mysql   mysql   1.1G 11月  7 11:19 2020 bulk_test2.csv