MySQLからcsvで出力する方法

MySQLからDumpして変換ではなく、直接CSVで出力する方法を探していると、こんなやり方が紹介されていた。

データをCSVで入出力する方法

CSVに出力(エクスポート)する方法

以下のように、データベースと出力ファイルを指定すれば出力されます。

mysql> select * from database into outfile "/tmp/dump.csv" fields terminated by ',';

CSVから入力(インポート)する方法

以下のように、入力ファイルとデータベースのテーブルを指定すれば入力できます。

mysql> load data local infile "/tmp/dump.csv" into table tablename fields terminated by ',';

区切りの改行コードを指定するには、”LINES TERMINATED BY”で指定します。

fields terminated by ',' LINES TERMINATED BY '\r\n';

ダブルクォーテーションで囲まれたデータの入出力すには、”ENCLOSED BY ‘”‘”を付加します。

fields terminated by ',' ENCLOSED BY '"';

データをCSV(Excel)で入出力する方法

CSVに出力(エクスポート)する方法

以下のように、データベースと出力ファイルを指定すれば出力されます。

mysql> set character set sjis;
mysql> select * from database into outfile "/tmp/dump.csv"
fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

CSVから入力(インポート)する方法

以下のように、入力ファイルとデータベースのテーブルを指定すれば入力できます。

mysql> set character set sjis;
mysql> load data (local) infile "/tmp/dump.csv" into table tablename
fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

入れ替える場合は、以下のように指定します。

mysql> set character set sjis;
mysql> load data (local) infile "/tmp/dump.csv" replace into table tablename
fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

MySQLの小技

上下の何が違うのか詳細を把握していない、というかまだうまく言っていないので何とも言えないんだけど、
ERROR 1046 (3D000): No database selected
と怒られてしまう。データベースは最初の「select * from データベース名」で指定しているはずなんだけどな…。

広告

0905追記
→解決。

よく考えてみれば当たり前の話で、CSVは単一シートだからテーブル一つ分しか出力できない。つまりまずデータベースを選び(use database-name)、その中でテーブル名を指定して実行する
select * from table名 into outfile・・・
のが正解だった。

About: dacelo


2 thoughts on “MySQLからcsvで出力する方法”

  1. Pingback: Koshizo2

Leave a Reply

Your email address will not be published. Required fields are marked *