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

そこにあるすべての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 に答える