- ベストアンサー
MySQLのLOAD文を使ってCSVファイルをデータベースにインポートする方法
- MySQLのLOAD文を使用してCSVファイルをデータベースにインポートする方法について説明します。
- CSVファイルとデータベースのテーブルの順番が異なる理由と、順番を変えずにインポートする方法についても解説します。
- MySQLのLOAD文を使ってCSVファイルをインポートした後、データベースでの順番を変えずにデータを表示する方法についてもご紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 InnoDB + AUTO_INCREMENt + LOAD DATA INFILE で オートクリメントのケースでバグ報告があったのを思い出しました。 http://bugs.mysql.com/bug.php?id=45960 ただ、そのケースは BULK INSERT時にオートインクリメントされる値が、大きく飛んでしまうというものであり、数値定数で格納する場合は該当しません。 数値定数を格納するようにだけしていて、オートクリメントはさせていないでしょう? (1)MySQLのバージョン ・・・MySQL5とかでなく、MySQL 5.1.36といった番号まで。 (2)提示された表定義で、実際にテストしているか (3)提示された入力データで、実際にテストしているか ・・・auto_incrementを指定した列に、1以上の数値定数を必ず格納するように入力ファイルを作っているか? (4)他に格納済データ、あるいは格納後に削除した行はないか (5)CREATE TABLE後、LOAD DATA INFILE文を何度か実行したり、エラーになったりしていないか (6)LOAD DATA INFILEの実行前後で、「SHOW CREATE TABLE tablename」による表定義情報の表示で、AUTO_INCREMENT=n の nの値は何になっているか
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
OSは、Windowsですかね? LOAD DATA INFILE文の最後に、 LINES TERMINATED BY '\r\n' を追加してみてください。 詳細は、マニュアルを参照してください。 http://dev.mysql.com/doc/refman/5.1/ja/load-data.html なお、auto_incrementを使っているなら、数値定数を指定するのでなく、nullを格納しようとすれば自動でカウントアップしてくれます。 nullであることは、入力ファイル中では \N を入れておきます。