Задать вопрос
  • Как вставить 1M+ строк в MySQL?

    @BigCrazyCat Автор вопроса
    Реализовал через LOAD DATA INFILE, но c потреблением памяти стало еще хуже.
    Теперь на 50000 строк приходится столько же, как раньше на 250000.
    Код:
    $dataString .= "$gs_id|$available|$shop_id|$product_key|$article|$category_id|$picture|$thumbnail|$original_picture|$name|$description|$brand_id|$model|$old_price|$price|$url|$destination_url\n";
    $dataPath = str_replace('\\', '/', Yii::$app->basePath)  . '/products/products.txt';
    $dataFile = fopen($dataPath, 'w');
    fwrite($dataFile, $dataString);
    fclose($dataFile);
    unset($dataString, $dataFile);
    
    Yii::$app->db->createCommand('SET GLOBAL local_infile = true;')->execute();
    Yii::$app->db->createCommand("
                LOAD DATA LOCAL INFILE '$dataPath'
                INTO TABLE product
                FIELDS TERMINATED BY '|'
                (
                    gs_id,available,shop_id,product_key,article,category_id,
                    picture,thumbnail,original_picture,name,description,brand_id,
                    model,old_price,price,url,destination_url
                )
     ")->execute();
    Ответ написан