MYSQL:LOAD DATA INFILE后显示跳过的记录?

Nat*_*ray 13 mysql sql load-data-infile

在MySQL我用过LOAD DATA LOCAL INFILE哪个工作正常.最后我得到一条消息:

Records: 460377  Deleted: 0  Skipped: 145280  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

如何查看跳过的记录的行号?SHOW warnings不起作用:

mysql> show warnings;
Empty set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

oab*_*rca 10

如果没有警告,但跳过某些行,则可能意味着主键被跳过的行重复.

找出重复项的最简单方法是在excel中打开本地文件并在主键列上执行重复删除以查看是否存在重复项.


小智 5

您可以创建一个临时表来删除主键项,以便它允许重复,然后插入数据.

构造一个类似的SQL语句

select count(column_with_duplicates) AS num_duplicates,column_with_duplicates
from table
group by column_with_duplicates
having num_duplicates > 1;
Run Code Online (Sandbox Code Playgroud)

这将显示具有冗余的行.另一种方法是只转储实际插入表中的行,并对原始文件运行文件差异命令,以查看哪些行未包含在内.