6

我有记录到.CSV文件中,我想将它们导入MySQL数据库。

每当我导入时,.CSV我都会收到消息Import has been successfully finished...,但 114 条记录中只有 79 条被插入到数据库中。

当我尝试导入.CSV包含 411 条记录的文件时,只插入了 282 条记录。获得 411 条记录的 CSV 文件包括两类记录Active and Sold,其中 114 条记录处于活动状态。

有人遇到过这种问题吗?如果是这样应该怎么做?

4

3 回答 3

1

我也有这个问题。尽管它有点旧并且这些建议朝着一个方向发展,但我找到了解决方案。我正在创建一个大型数据库并导入并且发生了同样的事情,经过反复试验,我意识到创建了一个密钥以某种方式分配(我不认识它,因为我正在使用新皮肤并且总是使用旧皮肤)。取出不知何故不是由我分配的钥匙,只留下主钥匙,然后砰地一声,吸收数据上传。此外,现在视图有问题,并且关于您的问题的请求超时。我将查看器显示推到数千,现在卡住了,无法使用我的 CP 在任何地方访问配置文件。因此,挂起和托管客户支持会懒惰地阅读我的担忧并最终覆盖它 - 我将不得不删除整个表格而不是任何 DROP 可以' 甚至无法将 SQL 运行为因过载而冻结。因此,值得深思的是将您的表格视图保持在低位,这就像在我的情况 b/c 中那样糟糕在控制中正确,这对我来说更有意义。

于 2012-08-16T17:19:19.130 回答
1

我用 php 编写了自己的 csv 导入器。我使用 php 命令 fgetcsv 读取 csv 文件,然后在循环中使用 mysql insert 命令。

$handle = fopen($this->file, "r");
$i=0;
$delimiter = ($this->fieldDelimiter == 'TAB') ?chr(9) : $this->fieldDelimiter;
而 (($data = fgetcsv($handle, 10000, $delimiter)) !== FALSE)
{
     $我的数据[] = $数据;
}
fclose($句柄);
重置($mydata);
if ($this->CSVhasTitle)
{
      $mydata = array_slice($mydata,1); //删除第一行
}

然后我遍历我的数组并使用mysql插入:

foreach ($mydata 作为 $value)
{
     插入 $table (...) 值 (....)
}

但是我在循环之前将确切的列名添加到数组中。我有一个包含所有列名的数组。

于 2012-08-01T21:27:04.723 回答
0

查看您的 CSV 文件。它很可能包含类似

1,2,"一些数据",1
2,5,"data,with,comma",2

如果不指定 COLUMNS OPTIONALLY ENCLOSED BY '"' (SINGLE_QUOTE DOUBLE_QUOTE SINGLE_QUOTE) 那么第二行第三列的字符串数据中嵌入的逗号将无法正确导入。

检查 CSV 以查看正在使用的附件字符并在 phpmyadmin 界面中指定。

于 2012-08-01T21:32:52.273 回答