我有一个包含26,000行的csv文件,我在其中遍历行并更新具有250,000+条记录的表中的记录(有时是多个)。此刻,它已经很老了!我想知道是否有另一种方法可以更快地执行此操作(在代码或mysql / etc中)
$row = 1;
if (($handle = fopen("zip-codes-database-DELUXE-BUSINESS2.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($row> 1){
# GET THE AREACODE FROM data 20
# name is: 21
$insert = "UPDATE ".TBLPREFIX."cities SET data = '".escape(serialize($data))."' WHERE area_code = ".$data[20]." AND title = '".trim(strtoupper($data[21]))."'";
mysql_query($insert) or die(mysql_error());
}
$row++;
}
fclose($handle);
}
最佳答案
基于什么我都可以尝试:
通过cmd行将csv放入表格或“在文件中加载数据”
使用“插入...选择”将记录更新到临时表中,在此将新旧连接在一起
将临时表移回原始表(删除/重命名)
似乎会更快..如果有点笨拙。
关于php - 如何循环通过CSV mysql更新更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14129004/