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

Tải lên CSV với PHP / MySQL

Khi tôi phải nhập CSV vào bảng cơ sở dữ liệu, tôi đã luôn viết trình phân tích / nhập csv của riêng mình. Nó khá đơn giản.

Đây là một ví dụ.

test.csv

Firstname,Lastname,Age
"Latheesan","Kanes",26
"Adam","Smith",30

test.php

<?php

// Mini Config
$csv_file       = 'test.csv';
$delimiter      = ',';
$enclosure      = '"';
$skip_first_row = true;
$import_chunk   = 250;

// Parse CSV & Build Import Query
$import_queries = array();
$first_row_skipped = false;
if (($handle = fopen($csv_file, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, $delimiter, )) !== FALSE) {
        if ($skip_first_row && !$first_row_skipped) {
            $first_row_skipped = true;
            continue;
        }
        list($firstname, $lastname, $age) = $data;
        $import_queries[] = "INSERT INTO myTable (firstname, lastname, age) VALUES ('$firstname', '$lastname', $age);";
    }
    fclose($handle);
}

// Proceed if any data got parsed
if (sizeof($import_queries))
{
    foreach(array_chunk($import_queries, $import_chunk) as $queries)
    {
        $dbh->query(implode(' ', $queries));
    }
}

?>

Các truy vấn được phân tích cú pháp sẽ giống như thế này (nếu bạn print_r nó):

Array
(
    [0] => INSERT INTO myTable (firstname, lastname, age) VALUES ('Latheesan', 'Kanes', 26);
    [1] => INSERT INTO myTable (firstname, lastname, age) VALUES ('Adam', 'Smith', 30);
)

Bạn có hai tùy chọn để nhập thực tế vào db:

  1. Xây dựng một bộ sưu tập truy vấn sql nhập và thực thi nó trong một lô (array_chunk) - điều này có nghĩa là ít truy vấn hơn so với db của bạn. Tuy nhiên, như bạn có thể thấy, tôi không kiểm tra các giá trị từ CSV - tức là tôi tin tưởng nguồn dữ liệu của mình và không thoát bất kỳ thứ gì - hơi nguy hiểm ...

  2. Bạn thực hiện truy vấn, ngay sau khi bạn tạo nó bằng cách thoát các giá trị - nhược điểm nhỏ là nó sẽ thực thi một truy vấn trên mỗi hàng trong csv ....

Hy vọng điều này sẽ hữu ích.




  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ược đồ DB cho các cuộc trò chuyện?

  2. Truy vấn Mysql sử dụng mệnh đề where và group theo

  3. Thiết kế cơ sở dữ liệu:Nhiều bảng so với một bảng duy nhất

  4. Giống như Phân biệt chữ hoa chữ thường trong MySQL

  5. truy vấn SQL đơn giản đưa ra Sử dụng hàm nhóm không hợp lệ