我有.CSV
文件的记录,我想将它们导入MySQL
数据库。
每当我导入.CSV
时,我都会收到消息Import has been successfully finished...
,但只有79条记录中的79条被插入到数据库中。
当我尝试导入包含411条记录的.CSV
文件时,只插入282条。获得411条记录的CSV文件包括两类记录Active and Sold
,其中有114条记录处于活动状态。
有人遇到过这类问题吗?如果是这样的话应该做什么?
答案 0 :(得分:1)
我用php编写了自己的csv导入程序。我使用php命令fgetcsv读取csv文件,然后在循环中使用mysql insert命令。
$handle = fopen($this->file, "r"); $i=0; $delimiter = ($this->fieldDelimiter == 'TAB') ? chr(9) : $this->fieldDelimiter; while (($data = fgetcsv($handle, 10000, $delimiter)) !== FALSE) { $mydata[] = $data; } fclose ($handle); reset ($mydata); if ($this->CSVhasTitle) { $mydata = array_slice($mydata,1); //delete first row }
然后我遍历我的数组并使用mysql insert:
foreach ($mydata as $value) { INSERT INTO $table (...) VALUES (....) }
但是我在循环之前将精确的列名添加到数组中。我有一系列所有列名。
答案 1 :(得分:1)
我也有这个问题。即使它有点陈旧,这些建议朝着一个方向发展,这是我找到的解决方案。我正在创建一个大型数据库并导入并发生同样的事情,经过试验和试验,我意识到一个密钥是以某种方式分配的(我不认识它,因为我使用新皮肤并且总是使用旧皮肤)。拿出了不是由我分配的钥匙,只留下了主要部分和繁荣,吸收了数据上传。此外,现在有问题,并请求超时您的问题。我将查看器显示向上推了很多,现在卡住,无法使用我的CP访问配置文件。因此,挂起和托管客户支持懒惰阅读我的问题,并在他们的最后覆盖它 - 我将不得不删除整个表而不是任何DROP,因为甚至无法运行SQL作为过载的冻结。因此,需要考虑的是让你的桌面视图向下,这在我的情况下很糟糕b / c我需要在视觉上快速查看17,000个记录,以确保我的.csv是正确的,而不是功能,好像问题然后可以发现它们和在控制中纠正,无论如何对我更有意义。
答案 2 :(得分:0)
查看您的CSV文件。它很可能包含类似
的内容1,2,"some data",1 2,5,"data,with,comma",2
如果你没有指定COLUMNS OPTIONALLY ENCLOSED BY'''(SINGLE_QUOTE DOUBLE_QUOTE SINGLE_QUOTE),那么第二行第三列中字符串数据中嵌入的逗号将无法正确导入。
检查CSV以查看正在使用的机箱字符,并在phpmyadmin界面中指定。