Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wsadowe wstawianie danych do bazy danych MySQL za pomocą php

Używasz pętli for?

Ale najszybszą opcją załadowania danych do MySQL jest użycie WCZYTAJ PLIK DANYCH polecenie, możesz utworzyć plik do załadowania przez PHP, a następnie przesłać go do MySQL za pomocą innego procesu (lub jako ostatni krok w oryginalnym procesie).

Jeśli nie możesz użyć pliku, użyj następującej składni:

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

więc zredukujesz całkowitą liczbę zdań do uruchomienia.

EDYCJA:Biorąc pod uwagę Twój fragment, wydaje się, że możesz skorzystać z WSTAW ... WŁĄCZ AKTUALIZACJA ZDUPLIKOWANYCH KLUCZY składnia MySQL, pozwalająca na pracę bazy danych i zmniejszająca ilość zapytań. Zakłada się, że Twoja tabela ma klucz podstawowy lub unikalny indeks.

Aby trafić do DB co 100 wierszy, możesz zrobić coś takiego (PROSZĘ PRZEJRZEĆ I PRZYPRAWIĆ DO SWOJEGO ŚRODOWISKA )

$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 przechwyci tablicę i wyśle ​​pojedyncze zapytanie wielokrotne:

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. Rozmiar schematu MySQL

  2. jak dobrze korzystać z dwóch metod $.post

  3. Brak odpowiedzi od PHP / MySQL NuSOAP

  4. Uszkodzone tabele MySQL InnoDB - jak to naprawić?

  5. Funkcja wywołania MySqlCommand