将csv文件添加到数据库会跳过奇数行

时间:2014-06-21 20:03:33

标签: php mysql unzip

我已经将大型文本文件上传到服务器并使用以下命令将它们添加到数据库中:

mysql_query("LOAD DATA LOCAL INFILE '$ver.txt' INTO TABLE objects FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n'");

它工作正常,直到我开始发送压缩文件并在服务器上解压缩它们。出于某种原因,它开始跳过每一行。我尝试下载解压缩的文件,它与我之前上传的文件相同。

我怀疑行结束可能导致问题。这些文件使用\r\n行结尾,但在SQL查询中指定\r\n并未正常工作,因此我坚持使用\n。为什么解压缩文件会导致此问题?

1 个答案:

答案 0 :(得分:0)

您应该在每个文本文件中包含一个MD5,然后在导入文件之前检查服务器端是否存在。例如,有这样的事情:

$goodMd5 = file_get_contents("$ver.md5");
$checkMd5 = md5_file("$ver.txt");

if ($goodMd5 != $checkMd5) die('Invalid MD5');

// Proceed...

这样你绝对相信你正在处理正确的数据。如果在MD5很好的情况下出现错误,则问题出在其他地方。