【问题标题】:How to loop through CSV mysql update quicker?如何更快地循环 CSV mysql 更新?
【发布时间】:2013-01-02 20:54:43
【问题描述】:

我有一个包含 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);
}

【问题讨论】:

  • 你能发布你的表结构,包括索引吗?

标签: php mysql database csv import


【解决方案1】:

没有什么我可能会尝试:

  1. 通过 cmd 行或“加载数据文件”将 csv 放入表中
  2. 使用“插入...选择”将记录更新到临时表中,您可以在其中加入新旧记录
  3. 将临时表移回原来的位置(删除/重命名)

似乎它会更快..如果有点笨拙。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 2013-10-15
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多