MySQLのLOAD文を使ってCSVファイルの内容をデータベースにインポートしたいと思っています。
そこで、下記のような内容のCSVファイルを作成しました
ファイル名:word_list1.csv
↓ファイルの内容↓
1,apple
2,egg
3,music
4,movie
5,baseball
作成した word_list1.csv の保存場所は
C:/hole_problem/word_list1.csv
です
また、word_list1.csv の内容をインポートするデータベース側のテーブルは下記のコマンドにより定義されています
CREATE TABLE word_list(
id INT AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
CONSTRAINT id_pri PRIMARY KEY (id)
) ENGINE=InnoDB;
CSVファイル word_list1.csv とデータベース側のテーブル word_list の準備が整ったところで下記のコマンドを実行しました
LOAD DATA LOCAL INFILE "C:/hole_problem/word_list1.csv" INTO TABLE word_list FIELDS TERMINATED BY ',';
コマンドはエラーなどなく正常に実行されましたが、実行後にデータベースを参照すると下記のようになっています
id name
2 egg
3 music
4 movie
5 baseball
35 apple
ここで質問なのですが、なぜ、CSVファイルでの順番とインポート後のデータベースでの順番が異なってきてしまうのでしょうか?
教えて頂けると助かります。
また、どのようにすれば順番が変わることなくCSVファイルの内容をデータベースにインポートできるのでしょうか?
No.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の値は何になっているか
No.1
- 回答日時:
OSは、Windowsですかね?
LOAD DATA INFILE文の最後に、
LINES TERMINATED BY '\r\n'
を追加してみてください。
詳細は、マニュアルを参照してください。
http://dev.mysql.com/doc/refman/5.1/ja/load-data …
なお、auto_incrementを使っているなら、数値定数を指定するのでなく、nullを格納しようとすれば自動でカウントアップしてくれます。
nullであることは、入力ファイル中では
\N
を入れておきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- XML PHP.laravelについて 1 2023/07/06 15:26
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) Power Query で取り込むデータのパスを相対パスに出来ませんか? 3 2022/04/05 18:31
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sql*loader 数値のロード
-
CSVを1行しかインポートしない...
-
作成したレコードセットのCSV出...
-
BCPコマンドについて
-
データのインポート、エクスポ...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
あるDBから別のDBのテーブルをs...
-
SQLです。あってますか?↓
-
mysqlにおけるホストのパーセン...
-
複数行をINSERTで『ORA-00911: ...
-
SQLServerのselect文でデータ数...
-
数字で「そ」と「り」
-
SQLデータベースへのリンクがあ...
-
mySQLのデータベースにhtmlのコ...
-
お世話かけますが、エラー内容...
-
ODBCを使用する場合のファイルD...
-
PHP+MySQL 内部結合(INNER_JOIN...
-
同じSQL文で極端に検索が遅くな...
-
sql merge文について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sql*loader 数値のロード
-
作成したレコードセットのCSV出...
-
MySQL Date型にNULLが設定でき...
-
CSVを1行しかインポートしない...
-
BCPコマンドについて
-
MySQLで連続csvファイルを読み...
-
phpmyadminでcsvインポートで文...
-
sqlite3でcsvのインポートがで...
-
BAT処理でCSVデータのインポート
-
【Access2000VBA】CSVファイル...
-
CSVインポート,日本語文字化け
-
CSVファイルのインポートについて
-
MySQLのLOAD文を使ってCSV...
-
MySQLにEXCELやCSVなどでの一括...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
あるDBから別のDBのテーブルをs...
-
PL/SQLをWindowsのBATファイル...
-
html上でMySQLにアクセス(Java...
-
同じSQL文で極端に検索が遅くな...
おすすめ情報