Mysql
 sql >> база данни >  >> RDS >> Mysql

Качване на CSV с PHP/MySQL

Когато някога трябваше да импортирам CSV в таблицата на базата данни, винаги съм писал свой собствен csv анализатор/импортер. Доста е просто.

Ето един пример.

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

?>

Анализираните заявки ще изглеждат така (ако print_r то):

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

Имате две опции за действителното импортиране в db:

  1. Създайте колекция от заявка за импортиране на sql и я изпълнете в пакет (array_chunk) - това означава по-малко заявки към вашата db. Въпреки това, както можете да видите, не проверявам стойностите от CSV - т.е. вярвам на източника си на данни и не избягвам нищо - малко опасно...

  2. Вие изпълнявате заявката, веднага след като сте я изградили с избягване на стойностите - малък недостатък е, че тя ще изпълнява една заявка на ред в csv....

Надявам се това да помогне.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy Reflection:Как да направя заявка за данни от конкретни колони?

  2. Презаредете MySQL данни в DIV с помощта на Ajax

  3. Предайте паролата на mysql_config_editor с помощта на променлива в shell

  4. Как да конвертирате времето в секунди във формат HH:MM:SS в MySQL?

  5. Вземете стойността от базата данни в selecte таг HTML PHP MySQL