【问题标题】:LOAD DATA LOCAL INFILE - results errorLOAD DATA LOCAL INFILE - 结果错误
【发布时间】: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) 进行了测试,其中包含正确数量的行...

标签: php mysql ajax csv


【解决方案1】:

最终,事实证明这实际上是在尝试检查错误响应时运行了两次,被自动增量 ID 中的大跳跃所掩盖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多