5

MySQLでLOADDATAINFILEコマンドを実行していますが、ファイルの1つでmysqlプロンプトにエラーが表示されています。

警告とエラーを確認するにはどうすればよいですか?今、私がしなければならない唯一のことは、プロンプトがインポート時に65,535の警告を報告するという事実です。

mysql> use dbname;
Database changed
mysql> LOAD DATA LOCAL INFILE '/dump.txt'
    -> INTO TABLE table
    -> (id, title, name, accuracy);
Query OK, 897306 rows affected, 65535 warnings (16.09 sec)
Records: 897306  Deleted: 0  Skipped: 0  Warnings: 0

これらの警告が何であるかをmysqlに表示させるにはどうすればよいですか?エラーログを調べましたが、見つかりませんでした。「SHOWWARNINGS」コマンドを実行すると、64件の結果しか返されませんでした。つまり、残りの65,000件の警告は別の場所にある必要があります。

2 |
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038
3 |
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038
4 |
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038
6 |
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038
7 |
+---------+------+--------------------------------------------------------------
--+
64 rows in set (0.00 sec)

これらのエラーを見つけるにはどうすればよいですか?

4

3 に答える 3

12

MySQLSHOW WARNINGSコマンドは、警告のサブセットのみを表示します。パラメータmax_error_countを変更することにより、表示される警告の制限を変更できます。

于 2009-09-28T17:48:42.837 に答える
2

多くのエラーが発生するということは、MySQLに入力から間違った列を読み取らせている、間違った区切り文字または無関係な引用符があることを示しています。

おそらく追加することでそれを修正することができます

[{FIELDS | COLUMNS}
    [TERMINATED BY 'string']
    [[OPTIONALLY] ENCLOSED BY 'char']
    [ESCAPED BY 'char']
]
[LINES
    [STARTING BY 'string']
    [TERMINATED BY 'string']
]

テーブル名の後、列リストの前。

何かのようなもの:

LOAD DATA LOCAL INFILE'/dump.txt' INTOTABLEテーブルフィールドは''で終了します。オプションで'"'(id、title、name、accuracy)で囲まれます。

デフォルトでは、これを指定しない場合、MySQLはタブ文字がフィールドを終了することを期待します。

于 2009-09-28T18:01:24.847 に答える
0

データファイルに空白のエントリが含まれている可能性があり、ターゲットテーブルでnull値が許可されていないか、問題のフィールドの有効なデフォルト値がありません。

テーブルに-のデフォルトがあることを確認しますaccuracy。ない場合は、ゼロに設定して、エラーが解消されるかどうかを確認します。

または、「awk」などを使用してファイルを前処理し、すべての行の精度フィールドに有効な数値があることを確認することもできます。

于 2009-10-16T12:40:32.700 に答える