- ベストアンサー
[MySQL]LOAD DATA INFILEで一部レコードがスキップされる問題について
- MySQLのLOAD DATA INFILEを使用してテキスト形式のデータを読み込む際に、一部の行がスキップされる問題が発生しています。この問題について、原因やスキップされるケースについて詳しく調査したいです。
- また、スキップされた行の詳細(何行目がスキップされたか、スキップされた理由など)を確認する方法についても教えていただけると助かります。
- ご教示いただけると幸いです。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単純に考えるなら、こんな原因が考えられます。 ・プライマリーキー、ユニークインデックスがあって重複行がスキップされた。 ・カラムの型やNOT NULL制約に引っかかった ・文字コードや改行コードで、正常にインポートできない行があった ・一部のカラムのバイナリデータをロードしようとして正常に読み込めない etc… どちらにせよ、MySQLのバージョン、テーブル定義、読み込むファイルや作業手順等分からないことだらけですので、原因は判断できませんが…
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
まず、MySQLのバージョンを、少なくともMySQL 4.0、4.1、5.0といったレベルまでは、最低限明記するようにしてください。 MySQL 4.0以前とMySQL 4.1では、大きな機能拡張に加え、いくつかの仕様変更があります。さらに、MySQL 5.0でも同様です。仕様変更に関しては、「旧仕様と同等に動かしたいなら、SQL-MODEでオプションを指定する」といった設定を行うことで可能なものもあります。 >LOAD DATA INFILE~で読み込む場合にスキップされるケースというのはどのような場合が >考えられるのでしょうか? 少なくとも、次のような情報を提示して欲しいのですけどね。 (1)LOAD DATA INFILE文の指定内容を省略しすぎない (2)表定義での列構成、主キー、各列のデータ型、文字コード (3)どういうCSVデータを入力しているか ・・・特にNULLとしたいデータがある場合や日時データなど そうでなければ、せっかくアドバイスしても、質問者さんのケースには該当せず、無駄な回答になってしまう可能性がありますから。 >また、何行目がスキップされたのかや、スキップされた理由を詳しく調べることはできますでしょうか? MySQLのマニュアルを、少しは見ているでしょうか? LOAD DATA INFILEの項に、「SHOW WARNINGS を利用する」といった説明があり、リンクも貼られていますよ? まずはマニュアルを見て、エラーや警告内容を確認してください。 そして、その内容に従い対処してみてください。もし対処方法が分からない部分があれば、前述の項目を提示した上で、再質問するようにすれば、より適切な回答を、より早くもらえる可能性があると思いますよ。
お礼
chukenkenkou様、ご回答誠にありがとうございます。 バージョン等の情報不足に関しては重々承知しておりますが、会社のPCでは質問ができないため、 家に帰ってから記憶を頼りに質問しましたため、このような質問となってしまいました。 お気分を害されたこと深くお詫びいたします。 大変参考になる情報ありがとうございます。 気になっていたのは、クエリは正常終了であるという点です。 エラーログには、出力されておりませんでした。 Warningも0件でしたので、SHOW WARNINGS は調べておりませんでした。 ただ、改めてリンク先を確認させていただいたところ、 スキップされた理由も調べられそうな感じですね! 週明けに、一度確認してみたいと思います。 どうもありがとうございました。
お礼
spieder様、ご回答ありがとうございます。 そうですね。もう少し会社から情報をもってくるべきでした…すみません。 正常終了にしてもいろいろ原因が考えられるのですね。 挙げていただいた項目について、週明けにでもチェックしてみたいと思います。 chukenkenkou様のご回答とあわせてもう一度試行錯誤してみます。 本当に、ご親切にありがとうございますm(_ _ )m