我有一个包含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/

10-09 08:29
查看更多