我有9k行的.csv
文件。当我使用php manual
的脚本时:
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>'n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />'n";
}
}
fclose($handle);
}
?>
我从csv
文件中获得了output
中的每个单元格。
问题发生时,我想把每一行作为记录,从它创建对象,并将其存储到数据库。我把它修改成:
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
$record= new Record($db);
echo "<p> $num fields in line $row: <br /></p>'n";
$row++;
for ($c=0; $c < $num; $c++) {
$record->$attributes[$c] = utf8_encode($data[$c]);
}
$record->Store();
}
fclose($handle);
}
在这种情况下,只有大约2k条记录存储在我的PostgreSQL
数据库中,但没有显示异常或错误。我不知道为什么我的循环停止了。每次我运行脚本时,它都会加载到我的数据库中不同数量的记录,在1,6k到2,1k之间。
我没有限制我的PostgreSQL
(至少我不知道任何…)
这里我要修改两点A.将!== FALSE)改为!= FALSE),不要问我为什么,有时它会起作用B. do NOT NEW你在循环中记录实例而不取消它,你正在创建2000个新实例,所以这可能是原因。
您可以尝试copy
语句。我相信它类似于MySql LOAD DATA IN FILE
如果只是需要添加的数据,那么它将比任何其他方法快得多。