我有记录到.CSV
文件中,我想将它们导入MySQL
数据库。
每当我导入时,.CSV
我都会收到消息Import has been successfully finished...
,但 114 条记录中只有 79 条被插入到数据库中。
当我尝试导入.CSV
包含 411 条记录的文件时,只插入了 282 条记录。获得 411 条记录的 CSV 文件包括两类记录Active and Sold
,其中 114 条记录处于活动状态。
有人遇到过这种问题吗?如果是这样应该怎么做?
我有记录到.CSV
文件中,我想将它们导入MySQL
数据库。
每当我导入时,.CSV
我都会收到消息Import has been successfully finished...
,但 114 条记录中只有 79 条被插入到数据库中。
当我尝试导入.CSV
包含 411 条记录的文件时,只插入了 282 条记录。获得 411 条记录的 CSV 文件包括两类记录Active and Sold
,其中 114 条记录处于活动状态。
有人遇到过这种问题吗?如果是这样应该怎么做?
我也有这个问题。尽管它有点旧并且这些建议朝着一个方向发展,但我找到了解决方案。我正在创建一个大型数据库并导入并且发生了同样的事情,经过反复试验,我意识到创建了一个密钥以某种方式分配(我不认识它,因为我正在使用新皮肤并且总是使用旧皮肤)。取出不知何故不是由我分配的钥匙,只留下主钥匙,然后砰地一声,吸收数据上传。此外,现在视图有问题,并且关于您的问题的请求超时。我将查看器显示推到数千,现在卡住了,无法使用我的 CP 在任何地方访问配置文件。因此,挂起和托管客户支持会懒惰地阅读我的担忧并最终覆盖它 - 我将不得不删除整个表格而不是任何 DROP 可以' 甚至无法将 SQL 运行为因过载而冻结。因此,值得深思的是将您的表格视图保持在低位,这就像在我的情况 b/c 中那样糟糕在控制中正确,这对我来说更有意义。
我用 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 (...) 值 (....) }
但是我在循环之前将确切的列名添加到数组中。我有一个包含所有列名的数组。
查看您的 CSV 文件。它很可能包含类似
1,2,"一些数据",1 2,5,"data,with,comma",2
如果不指定 COLUMNS OPTIONALLY ENCLOSED BY '"' (SINGLE_QUOTE DOUBLE_QUOTE SINGLE_QUOTE) 那么第二行第三列的字符串数据中嵌入的逗号将无法正确导入。
检查 CSV 以查看正在使用的附件字符并在 phpmyadmin 界面中指定。