やったこと
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