Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Załaduj plik csv z określonymi kolumnami za pomocą PDO

Zgodnie z dokumentacją w sekcji LOAD DATA INFILE Składnia :

Innymi słowy, lista kolumn powinna opisywać kolumny bazy danych (lub zmienne użytkownika), do których każde pola wejściowe należy przypisać (zamiast opisywać, w którym polu wejściowym znajduje się każda kolumna bazy danych). Jest to oczywiście oczywiste, gdy zdamy sobie sprawę, że plik wejściowy nie musi zawierać nazw pól, a zatem niemożliwe byłoby zastosowanie tego drugiego podejścia we wszystkich okolicznościach.

Dlatego chcesz:

$columns = '(vendor_id, receiver_no, purchase_order_no, destination, po_status)';

Będziesz także musiał dodać IGNORE 1 LINES do polecenia, aby pominąć pierwszą linię (z nazwami pól):

$affectedRows = $pdo->exec("
    LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable`
      FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
      LINES TERMINATED BY ".$pdo->quote($lineseparator)."
      IGNORE 1 LINES ". $columns);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zmiana nazwy zablokowanej tabeli

  2. Partycjonowanie mySQL dla wielu plików czy wydajność dla jednego pliku?

  3. MySQL SELECT w ostatnich dniach?

  4. Witryna została zhakowana przez wstrzyknięcie SQL

  5. Mieszanie starego mysql z PDO