Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn hàng loạt dữ liệu vào cơ sở dữ liệu MySQL bằng php

Sử dụng vòng lặp for?

Nhưng tùy chọn nhanh nhất để tải dữ liệu vào MySQL là sử dụng TẢI THÔNG TIN DỮ LIỆU , bạn có thể tạo tệp để tải qua PHP và sau đó cung cấp tệp đó vào MySQL thông qua một quy trình khác (hoặc là bước cuối cùng trong quy trình gốc).

Nếu bạn không thể sử dụng tệp, hãy sử dụng cú pháp sau:

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

vì vậy bạn giảm tổng số câu cần chạy.

CHỈNH SỬA:Với đoạn mã của bạn, có vẻ như bạn có thể hưởng lợi từ CHÈN ... BẬT CẬP NHẬT KHÓA DUPLICATE cú pháp của MySQL, cho phép cơ sở dữ liệu thực hiện công việc và giảm số lượng truy vấn. Điều này giả sử bảng của bạn có khóa chính hoặc chỉ mục duy nhất.

Để đạt được DB sau mỗi 100 hàng, bạn có thể làm điều gì đó như ( VUI LÒNG XEM LẠI NÓ VÀ SỬA MÔI TRƯỜNG CỦA BẠN )

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

Và executeQueries sẽ lấy mảng và gửi một truy vấn duy nhất:

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. LOAD_FILE trả về NULL

  2. mảng json_encode () trong vòng lặp while cho mySQL cho lịch

  3. So sánh MySQL và Java Time

  4. Kiểm tra xem người dùng mysql có tồn tại không

  5. CHỌN VÀO OUTFILE không thể ghi vào tệp