• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PostgreSQL MySQL CSV入出力)

PostgreSQL MySQL CSV入出力

このQ&Aのポイント
  • PostgreSQL8.4から出力したCSVをMySQL5.5で取り込む際のエラーについて
  • PostgreSQLのデータをMySQLに移行する方法について
  • PostgreSQLの配列データをMySQLにインポートする際の問題点

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

DBMSのバージョン、エクスポート、インポートの実行コマンドを提示していないので推測になりますがMySQL側はLOAD DATA (LOCAL) INFILE でインポートしようとしていると思います。 インポートデータ「"」ダブルクォートされているなら、 OPTIONALLY  ENCLOSED BY で対応できませんか? http://dev.mysql.com/doc/refman/4.1/ja/load-data.html

standingover
質問者

お礼

ありがとうございます 回答が遅くなり申し訳ありません DBMSはPostgreSQLが8.4、MySQLが5.5になります コマンドは以下の通りです COPY (SELECT id, TOCHAR(date, 'YYYY-MM-DD hh:mm:ss'), names) FROM table) TO E'/export.txt' WITH CSV null'\\N'; LOAD DATA INFILE "/export.txt" INTO TABLE table FIELDS TERMINATED BY ","; これで出力すると以下のようなデータが吐かれます 1行目:1,2011-01-01 01:01:00,"{""A_01"",""A_02""}" 2行目:2,2011-01-02 02:02:00,{""A_03""} 配列外側の二重引用符は、要素が二つ以上のときのみ付くようです FORCE QUOTE id, date, names とすると日付の部分でエラーになります(文字化けしていて内容は不明です) 日付を除いてFORCE QUOTEし、日付のみ自力で二重引用符を付け、 エディタから改行方法をUNIXのLFのみにしたところ無事インポートすることができました コマンドは以下の通りになります COPY (SELECT id, TOCHAR(date, 'YYYY-MM-DD hh:mm:ss'), names) FROM table) TO E'/export.txt' WITH CSV FORCE QUOTE id, names null'\\N'; LOAD DATA INFILE "/export.txt" INTO TABLE table FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'; 問題は、件数が数千件ありますので日付もSQLから二重引用符で囲めるようにしたいのですが何か方法はありませんでしょうか?