
[MySQL]LOAD DATA INFILE一部レコードがスキップされてしまう。
いつもお世話になっております。selfesteemです。
今回はMySQLについての質問です。
仕事である機関が提供するデータをMySQLで扱うのですが、上手くいかなくて困っています。
テキスト形式での提供で、読み込み用スクリプトが付属していました。
LOAD DATA LOCAL INFILE "ファイル名" INTO TABLE "テーブル名" ~
で読み込むのですが、一部の行がスキップされてしまいます。
Query OKとは出てきているのですが、すべてのレコードがどうしてもインポートできず、
Skipped: ~ のようにスキップされた旨のメッセージが表示されています。
いろいろ試行錯誤してみたのですが、どこに問題があるのかいまいちつかめないでいます。
このLOAD DATA INFILE~で読み込む場合にスキップされるケースというのはどのような場合が考えられるのでしょうか?
また、何行目がスキップされたのかや、スキップされた理由を詳しく調べることはできますでしょうか?
無知ですみませんが、本当に困っているので教えていただけると助かります。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
単純に考えるなら、こんな原因が考えられます。
・プライマリーキー、ユニークインデックスがあって重複行がスキップされた。
・カラムの型やNOT NULL制約に引っかかった
・文字コードや改行コードで、正常にインポートできない行があった
・一部のカラムのバイナリデータをロードしようとして正常に読み込めない
etc…
どちらにせよ、MySQLのバージョン、テーブル定義、読み込むファイルや作業手順等分からないことだらけですので、原因は判断できませんが…
spieder様、ご回答ありがとうございます。
そうですね。もう少し会社から情報をもってくるべきでした…すみません。
正常終了にしてもいろいろ原因が考えられるのですね。
挙げていただいた項目について、週明けにでもチェックしてみたいと思います。
chukenkenkou様のご回答とあわせてもう一度試行錯誤してみます。
本当に、ご親切にありがとうございますm(_ _ )m
No.1
- 回答日時:
まず、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 …
chukenkenkou様、ご回答誠にありがとうございます。
バージョン等の情報不足に関しては重々承知しておりますが、会社のPCでは質問ができないため、
家に帰ってから記憶を頼りに質問しましたため、このような質問となってしまいました。
お気分を害されたこと深くお詫びいたします。
大変参考になる情報ありがとうございます。
気になっていたのは、クエリは正常終了であるという点です。
エラーログには、出力されておりませんでした。
Warningも0件でしたので、SHOW WARNINGS は調べておりませんでした。
ただ、改めてリンク先を確認させていただいたところ、
スキップされた理由も調べられそうな感じですね!
週明けに、一度確認してみたいと思います。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- XML PHP.laravelについて 1 2023/07/06 15:26
- Android(アンドロイド) 今日楽天LINKで、電話をかけようとすると 新機能追加に伴う規約変更のお知らせ 同意しないと使えな 2 2023/07/05 16:18
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[MySQL]LOAD DATA INFILE一部レ...
-
テーブルの列数を調べたい
-
group byで最後のレコードを抽...
-
同一日に複数レコードがある場...
-
[MYSQL]日付のカラムにデーター...
-
WHEREなどの条件が多い場合、ど...
-
MySQL AUTO_INCREMENTが最大に...
-
betweenを使うyyyy/mm/ddでの範...
-
MySQL 改行コードを含む文字列...
-
select * での表示が崩れる?
-
MYSQLで小数点を表示する場合と...
-
SELECT文で、指定カラム以外の...
-
MYSQLで全てのカラムから検索す...
-
UNIONする際、片方テーブルしか...
-
INDIRECT関数の代替方法は?
-
DBの定義のサイズを大きくし過...
-
MySQLで論理名を取得する方法
-
【Transact-sql】 where条件、i...
-
複数カラムに対するLIKE文の最適化
-
SQL、oracleにて文字列操作(連...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
group byで最後のレコードを抽...
-
テーブルの列数を調べたい
-
[MySQL]LOAD DATA INFILE一部レ...
-
select * での表示が崩れる?
-
MYSQLで小数点を表示する場合と...
-
WHEREなどの条件が多い場合、ど...
-
MySQL 改行コードを含む文字列...
-
誤って削除したIDカラムを復元...
-
時間範囲が重複したレコードを...
-
MySQL AUTO_INCREMENTが最大に...
-
「VARCHAR(255)」を「text」に...
-
フレンドリストのようなものを...
-
mysqlでカンマデータのgroup by
-
betweenを使うyyyy/mm/ddでの範...
-
MYSQLのストアドでの動的SQLに...
-
MySQLでのデータ入力について
-
[MYSQL]日付のカラムにデーター...
-
重複の場合は1件のみ取込む処理
-
MySQL SELECT WHERE 条件 大量
-
MySQLでカラム内の値の先頭の数...
おすすめ情報