Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Penyisipan batch data ke database MySQL menggunakan php

Menggunakan perulangan for?

Tetapi opsi tercepat untuk memuat data ke MySQL adalah dengan menggunakan LOAD DATA INFILE perintah, Anda dapat membuat file untuk dimuat melalui PHP dan kemudian memasukkannya ke MySQL melalui proses yang berbeda (atau sebagai langkah terakhir dalam proses asli).

Jika Anda tidak dapat menggunakan file, gunakan sintaks berikut:

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

jadi Anda mengurangi jumlah total kalimat yang harus dijalankan.

EDIT:Mengingat cuplikan Anda, tampaknya Anda dapat mengambil manfaat dari INSERT ... ON PEMBARUAN KUNCI DUPLIKAT sintaks MySQL, membiarkan database melakukan pekerjaan dan mengurangi jumlah kueri. Ini mengasumsikan tabel Anda memiliki kunci utama atau indeks unik.

Untuk mencapai DB setiap 100 baris, Anda dapat melakukan sesuatu seperti (HARAP TINJAUAN DAN PERBAIKINYA KE LINGKUNGAN ANDA )

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

Dan executeQueries akan mengambil array dan mengirim satu kueri ganda:

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. PHP:Kueri PDO tidak mengembalikan hasil, tetapi kueri yang sama mengembalikan 4 hasil di phpmyadmin?

  2. #1064 -Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda

  3. MySQL/PHP Menyisipkan baris yang sama dua kali

  4. meneruskan nama id saat klik menggunakan ajax ke php

  5. pertanyaan basis data di sql