【MySQL】csvで入出力

たまに利用するけど、すぐに忘れてしまうので、忘却防止に。

操作テーブル・・・user_tbl
操作ファイル・・・/tmp/user_list.csv

■csv出力

select * from user_tbl
INTO OUTFILE '/tmp/user_list.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'

上記のSQLを発行すれば、サーバ内の/tmpにuser_list.csvが出力される。

INTO OUTFILEは出力先を指定する。
FIELDS TERMINATED BYはカンマ区切りにする。
OPTIONALLY ENCLOSED BYはダブルクオーテションで値を括ってくれる。

出力する際、出力先に同名ファイルが存在するとエラーとなります。
恐らく/tmpは誰でも書き込めるけど、書き込み権限がないとエラーが発生する(当たり前)

■csv入力

LOAD DATA LOCAL INFILE "/tmp/user_list.csv" INTO TABLE user_tbl
FIELDS TERMINATED BY ','
ENCLOSED BY '"'

基本的には出力と逆だけど、入力ファイル内の記述がダブルクオーテションで値を括ってなければ、ENCLOSED BYいらないと思った。