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

Làm việc với con trỏ tệp trên csv

  1. fgets() tốt nhất để sử dụng cho việc này? Đó là một cách tốt để làm điều đó. Một tùy chọn khác là đọc toàn bộ tệp thành một mảng có file() , sau đó lặp qua mảng với foreach() .

  2. Tôi có cần tích hợp lệnh gọi lại không? Không. Chỉ cần thực hiện truy vấn sau khi đọc hàng loạt dòng từ tệp.

  3. Bắt đầu từ đâu? Khi bộ đếm đạt đến kích thước lô, hãy thực hiện truy vấn. Sau đó đặt bộ đếm trở lại 0 và đặt chuỗi truy vấn trở lại giá trị ban đầu. Cuối cùng, khi kết thúc vòng lặp, bạn sẽ cần thực hiện truy vấn với các giá trị còn lại (trừ khi kích thước tệp là bội số chính xác của kích thước lô, trong trường hợp đó sẽ không còn bất kỳ giá trị nào).

$batch_size = 100;
$counter = 0;

//instead of executing query one by one,
//let us prepare 1 SQL query that will insert all values from the batch

$sql_prefix ="INSERT INTO workorderstest(id,parentid,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10) VALUES ";
$values = "";

while (($line = fgets($handle)) !== false) {
    $values .= "($line),";
    $counter++;
    if ($counter == $batch_size) {
        $values = substr($values, 0, strlen($values) - 1);
        $conn->query($sql_prefix . $values) or die($conn->error);
        $counter = 0;
        $values ="";
    }
}
if ($counter > 0) { // Execute the last batch
    $values = substr($values, 0, strlen($values) - 1);
    $conn->query($sql_prefix . $values) or die($conn->error);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để CHỌN trên hai bảng?

  2. LỖI 1698 (28000):Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost'

  3. Sự khác biệt giữa phép nối được phân tách bằng dấu phẩy và phép nối theo cú pháp trong MySQL là gì?

  4. Truy xuất dữ liệu cho nhiều tham chiếu hoặc đơn lẻ mà không cần toán tử like

  5. mysql_insert_id với bản cập nhật