【发布时间】:2015-06-08 11:24:41
【问题描述】:
我目前正在创建一个系统来解析和重新格式化多个 CSV 文件,生成一个新的“主”CSV。然后使用 LOAD DATA LOCAL INFILE(MySQL 版本 5.6.24)将该文件导入 MySQL 数据库。
目前 - 所有的解析/处理都发生在 JS/AJAX 中,然后它会非常简单地发布到创建新 csv 的 php 文件,然后到另一个处理导入数据库的 php 文件。
$thisDate = $_POST['whatDate'];
$table = "stats";
$csv = "dailySalesCSVs/" . $whatDate . "/" . $whatDate . ".csv";
$query = "load data local infile '$csv'
into table stats
character set latin1
fields terminated by ','
enclosed by '\"'
lines terminated by '\r\n'
ignore 1 lines
(Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12)";
$result = mysqli_query($con, $query);
这个新创建的“主”CSV 中有 728 行 - 但是在导入时,有 1750 行被插入到表中。不过,在 Workbench 和 MyAdmin 中手动运行导入查询效果很好。
1750 不是 728 的倍数 - 所以我知道导入脚本不可能被多次触发(我已经通过大量测试证实了这一点)。
我已经读到,当从 AJAX 触发 LOAD DATA LOCAL INFILE 查询时,可能会出现一些类似的错误 - 但这是我设法找到的关于这个问题的唯一信息。
如果有人以前遇到过这种情况 - 任何指针将不胜感激
更新: ----- 所有记录都准确地输入了两次——尽管第一个字段(AUTO_INCREMENT ID 字段)在插入正确的前 728 个值后跳过了大量的“增量”。
【问题讨论】:
-
你的文件有空行吗?
-
文件中没有空行,但最后一行确实以换行符结尾
-
每次我在加载文件时尝试使用标准函数时似乎都会遇到某种错误。因此,我加载文件并
echo输出值以查看是否一切都正确加载。然后运行插入查询。 -
我刚刚通过 echo'ing readfile($csv) 进行了测试,其中包含正确数量的行...