0

我可以编辑和上传包含超过 50000 条记录(购物车产品)的 CSV。它应该更新系统中的表数。所以我在我的购物车中使用 zend 框架。

我计划在使用 PHP/MYSQL 批量处理它们之前在内存中分解它们(50000 条 CSV 记录)

请任何人都可以给我建议

我到现在为止是

public function getDataFromPath($path=null) {
        if($path == null) {
            $path = $this->_path;
        }
        ini_set("auto_detect_line_endings", 1);
        $fp = fopen($path, "r");
        while(($line = fgetcsv($fp, 5000, ",")) !== FALSE) {
            $line = self::trimArray($line);
            $this->data[] = $line;
        }
        fclose($fp);          
        return $this->data;
    }

问候肉山

4

2 回答 2

1

这是一份工作……

数据库人!!!

使用load data infile业务将您的 csv 直接加载到表中,然后执行您需要的任何魔术。

于 2012-04-12T07:53:38.397 回答
1

那里的每个 RDBMS 都不应该有 50.000 行的问题。没什么。无需批量处理它们。

只需使用LOAD DATA INFILE命令就可以了。

有关示例,请参见此处:LOAD DATA INFILE 轻松将 YYYYMMDD 转换为 YYYY-MM-DD?

更新(对 Ion Wood 的回答发表评论):要创建 CSV 文件,您可以使用该SELECT .. INTO OUTFILE命令。

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

有关详细信息,请参阅手册。

于 2012-04-12T08:00:06.600 回答