2

这是简单的代码

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

代码运行良好。但我只是好奇如何知道 csv 中是否有一行错误,它是哪一行?

4

1 回答 1

3

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

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

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

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

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

于 2013-08-13T09:53:05.653 回答