2011-12-15 2 views
5

私は、次のクエリを使用してMySQLのテーブルにテキストファイルからデータをロードしています:スキップエラー行区切りファイルから

LOAD DATA INFILE "myFile.csv" 
INTO TABLE some_table 
COLUMNS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' (admin,consumer); 

しかし、私のファイルは、それができスキップされていないいくつかのエラー行が含まれている場合その場所でプロセス全体が停止します。私のファイルフォーマットが次のようなものならば、私は意味します:

 
---------- 
sankr : kumar 
---------- 
ramesh:rao 
---------- 
new users add here 
---------- 
sri : vennla 
---------- 
anu : bhavya 
---------- 

「新しいユーザーはここに追加してください」という行をスキップして読み込む必要があります。どのようにこれを行うことができますか?

答えて

-2

LOAD DATA INFILEを使用してデータ内の行をスキップすることはできません。

個別のクエリを使用してレコードを後で削除してください。

DELETE FROM table WHERE column = "new users add here"; 
+0

ファイルにエラー行が含まれているため、読み込み中にクエリがエラーを生成し、データベースに何もロードされません。その実行を停止します。これを達成するための代替方法はありますか? – sankar

+0

@ sankarあなたはどんなエラーを出していますか? –

+0

"ERROR 1261(01000):行73にすべての列のデータが含まれていません。データベースに1行でもロードされません。 – sankar

2

あなたが探しているキーワードはIGNOREです。同様に

LOAD DATA INFILE "myFile.csv" IGNORE 
INTO TABLE some_table 
COLUMNS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' (admin,consumer); 
+2

本当ですか? mysqlのドキュメントhttp://dev.mysql.com/doc/refman/5.5/en/load-data.html 'IGNORE'は、既存の行と重複する主キーを持つ行を無視することを意味します。 – hellojinjie

+0

Hm。私はそれを見ますが、それは私のために働いた。私はどこから得たのか覚えていない。後でテストして、すべてのエラーを無視するか、重大なエラーを重複するかどうかを確認することができます。 – Dylan

+0

それは動作しません、それは解決策ではありません –

1

私は LOAD DATA LOCAL INFILE 'ファイル名は' が しかし LOAD DATA LOCAL INFILE 'ファイル名'、データフォーマットエラー(不正な日付)の後に終了するだろうREPLACEことがわかった LOAD DATA LOCAL INFILE 'filename' IGNORE 続きを読む

これは私が知る限り、MySqlのドキュメント(ver 5.0)とは逆です。