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・・・
のが正解だった。
広告
MySQLからcsvで出力する方法 | Weblogy http://t.co/g8CvD5F8