sql >> Databáze >  >> RDS >> Mysql

Dávkové vkládání dat do databáze MySQL pomocí php

Používáte smyčku for?

Ale nejrychlejší možností, jak načíst data do MySQL, je použít NAČÍST DATOVÝ INFILE můžete vytvořit soubor, který se má načíst pomocí PHP, a poté jej vložit do MySQL pomocí jiného procesu (nebo jako poslední krok v původním procesu).

Pokud nemůžete použít soubor, použijte následující syntaxi:

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

takže redukujete na celkový počet vět, které chcete spustit.

EDIT:Vzhledem k vašemu úryvku se zdá, že můžete těžit z INSERT ... ON AKTUALIZACE DUPLIKÁTNÍHO KLÍČE syntaxe MySQL, což umožňuje databázi pracovat a snižuje množství dotazů. To předpokládá, že vaše tabulka má primární klíč nebo jedinečný index.

Chcete-li zasáhnout DB každých 100 řádků, můžete udělat něco jako (PROSÍM, ZKONTROLUJTE JI A OPRAVTE JI VE SVÉM PROSTŘEDÍ )

$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;
    }
}

A executeQueries uchopí pole a odešle jeden vícenásobný dotaz:

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


  1. PHP MySQL - pro každých 6 řádků vložit div?

  2. Vkládání dat do MySQL z vícerozměrného pole v php

  3. Chyby parametrů v Laravelu

  4. PHP/mySQL – pravidelné přepočítávání hodnot benchmarku, když noví uživatelé zadávají svá data