メモのコツを教えてください!

[MySQL]LOAD DATA INFILE一部レコードがスキップされてしまう。

いつもお世話になっております。selfesteemです。

今回はMySQLについての質問です。

仕事である機関が提供するデータをMySQLで扱うのですが、上手くいかなくて困っています。
テキスト形式での提供で、読み込み用スクリプトが付属していました。

LOAD DATA LOCAL INFILE "ファイル名" INTO TABLE "テーブル名" ~
で読み込むのですが、一部の行がスキップされてしまいます。

Query OKとは出てきているのですが、すべてのレコードがどうしてもインポートできず、
Skipped: ~ のようにスキップされた旨のメッセージが表示されています。

いろいろ試行錯誤してみたのですが、どこに問題があるのかいまいちつかめないでいます。
このLOAD DATA INFILE~で読み込む場合にスキップされるケースというのはどのような場合が考えられるのでしょうか?

また、何行目がスキップされたのかや、スキップされた理由を詳しく調べることはできますでしょうか?
無知ですみませんが、本当に困っているので教えていただけると助かります。

よろしくお願いいたします。

A 回答 (2件)

単純に考えるなら、こんな原因が考えられます。


・プライマリーキー、ユニークインデックスがあって重複行がスキップされた。
・カラムの型やNOT NULL制約に引っかかった
・文字コードや改行コードで、正常にインポートできない行があった
・一部のカラムのバイナリデータをロードしようとして正常に読み込めない
etc…

どちらにせよ、MySQLのバージョン、テーブル定義、読み込むファイルや作業手順等分からないことだらけですので、原因は判断できませんが…
    • good
    • 1
この回答へのお礼

spieder様、ご回答ありがとうございます。

そうですね。もう少し会社から情報をもってくるべきでした…すみません。

正常終了にしてもいろいろ原因が考えられるのですね。
挙げていただいた項目について、週明けにでもチェックしてみたいと思います。
chukenkenkou様のご回答とあわせてもう一度試行錯誤してみます。

本当に、ご親切にありがとうございますm(_ _ )m

お礼日時:2010/05/16 21:23

まず、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 を利用する」といった説明があり、リンクも貼られていますよ?

まずはマニュアルを見て、エラーや警告内容を確認してください。
そして、その内容に従い対処してみてください。もし対処方法が分からない部分があれば、前述の項目を提示した上で、再質問するようにすれば、より適切な回答を、より早くもらえる可能性があると思いますよ。

参考URL:http://dev.mysql.com/doc/refman/5.1/ja/load-data …
    • good
    • 0
この回答へのお礼

chukenkenkou様、ご回答誠にありがとうございます。

バージョン等の情報不足に関しては重々承知しておりますが、会社のPCでは質問ができないため、
家に帰ってから記憶を頼りに質問しましたため、このような質問となってしまいました。
お気分を害されたこと深くお詫びいたします。

大変参考になる情報ありがとうございます。

気になっていたのは、クエリは正常終了であるという点です。
エラーログには、出力されておりませんでした。
Warningも0件でしたので、SHOW WARNINGS は調べておりませんでした。

ただ、改めてリンク先を確認させていただいたところ、
スキップされた理由も調べられそうな感じですね!

週明けに、一度確認してみたいと思います。
どうもありがとうございました。

お礼日時:2010/05/15 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報