分解CSV中的大量行,并将它们作为批处理php进行处理

分解CSV中的大量行,并将它们作为批处理php进行处理,php,mysql,csv,import,Php,Mysql,Csv,Import,我正在编辑和上传一个超过50000条记录的CSV(购物车产品)。它应该更新系统中的表数。所以我在购物车中使用zend框架 我计划在使用PHP/MYSQL批处理之前在内存中分解它们(50000条CSV记录) 请任何人都能给我这个建议 我现在做的是 public function getDataFromPath($path=null) { if($path == null) { $path = $this->_path; }

我正在编辑和上传一个超过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;
    }
问候 roshan这是一份

数据库管理员


使用业务将您的csv直接加载到一个表中,然后执行您需要的任何操作。

每个RDBMS都不应该有50000行的问题。没什么。不需要按批处理它们

只要使用命令,你就会没事的

有关示例,请参见此处:

更新(对Ion Wood答案的评论原因):要创建CSV文件,您可以使用
选择。。输入输出文件
命令

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

有关更多信息,请参见

为什么?真的,你为什么要这么做?为什么它会更新表的数量?你尝试了什么?你在哪里卡住了?读一点,写一点,冲洗一下,重复,直到文件被处理…@tombom事实上我想通过CSV文件更新我的所有产品及其属性一次,因为我有大量记录50000我计划在内存中分解它并进行批处理我更新当前即时消息感谢评论谢谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢,但我应该给一个客户界面来进行导出CSV编辑及upload@Roshan更新了我的答案。这就是你要找的吗?如果没有,请进一步澄清。