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

Unggah CSV dengan PHP/MySQL

Setiap kali saya harus mengimpor CSV ke tabel database, saya selalu menulis pengurai/importir csv saya sendiri. Ini cukup sederhana.

Berikut ini contoh.

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

?>

Kueri yang diuraikan akan terlihat seperti ini (jika Anda print_r itu):

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

Anda memiliki dua opsi untuk pengimporan aktual ke db:

  1. Buat koleksi kueri sql impor dan jalankan dalam batch (array_chunk) - ini berarti lebih sedikit kueri terhadap db Anda. Namun seperti yang Anda lihat, saya tidak memeriksa nilai dari CSV - yaitu saya memercayai sumber data saya dan tidak melarikan diri dari apa pun - agak berbahaya...

  2. Anda menjalankan kueri, segera setelah Anda membuatnya dengan menghindari nilai - kelemahan kecilnya adalah ia akan mengeksekusi satu kueri per baris dalam csv....

Semoga membantu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat membuat koneksi ke database GlassFish dengan Netbeans?

  2. masalah dengan OneToMany termasuk klausa filter di musim semi jpa

  3. Simpan HTML dengan aman di DB tanpa memengaruhi pengkodean Karakter

  4. Java Spring JPA Pagination Tidak berfungsi jika lebih dari satu Halaman

  5. PILIH bidang MySQL yang berisi substring