当我加载INFILE时,如何知道csv错误中的哪一行?

时间:2013-08-13 09:18:36

标签: php mysql

这是简单的代码

$loadsql = "LOAD DATA LOCAL INFILE '$target_path'
    INTO TABLE `test`
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '\"'
    IGNORE 1 LINES";
    $result = mysql_query($loadsql);

代码运作良好。但我只是好奇我怎么知道csv中是否存在一行错误,它是什么行?

1 个答案:

答案 0 :(得分:3)

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  

使用LOAD DATA LOCAL INFILE,数据解释和重复键   错误成为警告,操作继续,因为服务器   没有办法停止在中间传输文件   操作。对于重复键错误,这与IGNORE相同   指定。 IGNORE将在本节后面进一步解释。

您确定没有报告警告吗?要查看它们,请尝试在mysql控制台中使用SHOW WARNINGS

PS /警告附加到会话 - 您只能从加载数据文件的会话中显示。< / p>

PS2 /就像在中一样,MySQL 警告错误不同,因为它们不会停止当前操作。但是他们通常表明出了问题,应该对它们进行调查。至于LOAD DATA INFILE的具体情况,正如文档清楚地说明的那样,报告警告而不是错误的选择仅仅取决于服务器没有(优雅)方式停止文件传输的事实它已经开始了。