【问题标题】:Why isn't data inserted into MySQL?为什么不将数据插入 MySQL?
【发布时间】:2016-10-15 20:38:27
【问题描述】:

我正在将 4,000 多个 CSV 文件导入 MySQL。我使用的代码对于前 2,750 个 CSV 文件非常有效——数据被插入 MySQL 就很好了。然而,在前 2,750 个文件之后,数据并没有被插入 MySQL,即使 (a) CSV 中的数据格式/类型没有改变 (b) MySQL 显示数据插入成功,没有错误。到底是怎么回事?这是否与数据库的大小有关——在插入 2,750 次 CSV 后,它大约为 180 GB。相关代码如下。

$query = "LOAD DATA LOCAL INFILE '$csvfilelocation' INTO TABLE xxx FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES (@col1,@col2,@dummy,@dummy,@col5,@col6) set abc=@col1,efg=@col2,hij=@col5,klm=@col6";

$status = mysqli_query($con,$query) or die(mysqli_error($con));

//If successful insert, mark the CSV as imported
$filename = $csvfilelocation;
if ($status) {
    $stmt = mysqli_prepare($con, "UPDATE xxx_list SET putindatabase = 1 WHERE filename = ?");
    mysqli_stmt_bind_param($stmt, "s", $filename);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_close($stmt);
}

【问题讨论】:

  • 删除第 2751 个并重试。
  • @selami 试过了。不工作。此外,除了其中的数据之外,所有 CSV 在列、格式等方面都完全相同。
  • 可能发生超时;尝试增加它或将其设置为零。 php.net/manual/en/function.set-time-limit.phpupload_max_filesize 可能会在这里发挥作用,但我怀疑后者。
  • @Fred-ii- 它没有超时。该进程正在运行——它继续迭代 CSV,就好像一切正​​常。但是,数据不在 MySQL 中。
  • 然后检查 UPDATE 查询中的错误,看看它是否捡起任何东西并报告错误,如果它与它相关。

标签: php mysql csv


【解决方案1】:

我从来没有弄清楚为什么会发生这种情况。我通过将 CSV 拆分为不同的数据库而不是将它们全部放在一个数据库中解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2014-09-07
    • 2012-06-11
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多