我正在MySQL中运行LOAD DATA INFILE命令,其中一个文件在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向我展示这些警告是什么?我查看了错误日志,但我找不到它们。运行“SHOW WARNINGS”命令只返回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)
如何找到这些错误?
答案 0 :(得分:5)
MySQL SHOW WARNINGS
命令仅显示警告的子集。您可以通过修改参数max_error_count来更改显示的警告限制。
答案 1 :(得分:1)
数据文件中可能有空白条目,目标表不允许空值,或者没有相关字段的有效默认值。
我会检查该表是否有accuracy
的默认值 - 如果没有,请将其设置为零,看看是否清除错误。
或者您可以使用'awk'或类似方法预处理文件,并确保所有行中的准确性字段都有一个有效的数值。
答案 2 :(得分:0)
获得许多错误表明你有错误的分隔符或无关的引号使得MySQL从输入中读取错误的列。
你可以通过添加
来解决这个问题[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
在tablename之后和列列表之前。
类似的东西:
LOAD DATA LOCAL INFILE' /dump.txt' INTO TABLE表 字段以“'可选地由'''括起来终止 (id,title,name,accuracy);
默认情况下,如果您没有具体说明,MySQL希望制表符可以终止字段。