2010年4月22日木曜日

MySQLのデータをCSVで出力/入力

どうも、俺@始業しましたです。

ググればすぐ出てきますが、MySQLのデータを簡単にcsv(またはtsv)出力する方法のめもです。
出力
mysql> SELECT * FROM table_name
INTO OUTFILE "/tmp/out.csv"
FIELDS TERMINATED BY ',';
これで、/tmp/out.csvというファイルに`table_name`テーブルのデータをカンマ区切りで出力できます。
タブ区切りで、各項目を`"(ダブルクォート)`で囲む場合は、
SELECT * FROM table_name
INTO OUTFILE "/tmp/out.csv"
FIELDS TERMINATED BY '\t'
ENCLOSED BY '"';
と、ENCLOSED BY '"' を追加します。
テーブルを結合した結果をcsv出力し、改行コードは`\r\n`にするには
SELECT * FROM table_name
INNER JOIN join_table ON table_name.f_key = join_table.id
INTO OUTFILE "/tmp/out.csv"
FIELDS TERMINATED BY '\t'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
と、LINES TERMINATED BY '\r\n'を追加します。

次にデータを入力する方法です。
これはmysqldumpで取得したデータをリストアするより高速に動作します。(たぶん)
mysql> LOAD DATA INFILE "/tmp/in.csv"
FIELDS TERMINATED BY ',';

もちろんタブ区切りの場合は、
LOAD DATA INFILE "/tmp/in.csv"
FIELDS TERMINATED BY '\t';
になります。
ダブルクォートや改行コードを指定してインポートする場合も、INTO OUTFILE構文のと同様です。

ただ、クライアントマシンとMySQLマシンが別サーバで接続されている場合は、
mysql> LOAD DATA LOCAL INFILE "/tmp/in.csv"
FIELDS TERMINATED BY ',';
と、`LOCAL`キーワードを指定します。


出力する方法
入力する方法


以上でぇぇぇえぇす。

0 件のコメント: