Mysql
 sql >> база данни >  >> RDS >> Mysql

Пакетно вмъкване на данни в MySQL база данни с помощта на php

Използвате ли цикъл for?

Но най-бързият вариант за зареждане на данни в MySQL е да използвате ЗАРЕДЕТЕ ВХОДЯЩ ФАЙЛ С ДАННИ можете да създадете файла за зареждане чрез PHP и след това да го подадете към MySQL чрез различен процес (или като последна стъпка в оригиналния процес).

Ако не можете да използвате файл, използвайте следния синтаксис:

insert into table(col1, col2) VALUES (val1,val2), (val3,val4), (val5, val6)

така че намалявате до общия брой изречения за изпълнение.

РЕДАКТИРАНЕ:Като се има предвид вашият фрагмент, изглежда, че можете да се възползвате от INSERT ... ON АКТУАЛИЗАЦИЯ НА ДУБЛИРАН КЛЮЧ синтаксис на MySQL, оставяйки базата данни да върши работата и намалявайки количеството на заявките. Това предполага, че вашата таблица има първичен ключ или уникален индекс.

За да достигнете до DB на всеки 100 реда, можете да направите нещо като (МОЛЯ, ПРЕГЛЕДАЙТЕ ГО И ГО ПОПРАВЕТЕ ЗА ВАШАТА СРЕДА )

$insertOrUpdateStatement1 = "INSERT INTO table (col1, col2) VALUES ";
$insertOrUpdateStatement2 = "ON DUPLICATE KEY UPDATE ";
$counter = 0;
$queries = array();

foreach($itemList as $key => $item){
    $val1 = escape($item->col1); //escape is a function that will make 
                                 //the input safe from SQL injection. 
                                 //Depends on how are you accessing the DB

    $val2 = escape($item->col2);

    $queries[] = $insertOrUpdateStatement1. 
    "('$val1','$val2')".$insertOrUpdateStatement2.
    "col1 = '$val1', col2 = '$val2'";

    $counter++;

    if ($counter % 100 == 0) {
        executeQueries($queries);
        $queries = array();
        $counter = 0;
    }
}

И executeQueries ще грабне масива и ще изпрати единична множествена заявка:

function executeQueries($queries) {
   $data = "";
     foreach ($queries as $query) {
        $data.=$query.";\n";
    }
    executeQuery($data);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench игнорира външни ключове

  2. Надхвърляне на ограничението на стойността TIME на MySQL от 838:59:59

  3. Mysql - Как да подредя резултати чрез редуване на (1,2,3, 1, 2, 3, 1, 2, 3,) редове, възможно ли е?

  4. Мога ли да изпълня всяка програма извън mysql чрез mysql тригери?

  5. doctrine:build-schema игнориране на колоните на таблицата