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

Заредете csv файл с конкретни колони, като използвате PDO

Както е документирано под LOAD DATA INFILE Синтаксис :

С други думи, списъкът с колони трябва да описва колоните на базата данни (или потребителски променливи), към които всяко полета за въвеждане трябва да се присвои (вместо да се описва в кое поле за въвеждане може да бъде намерена всяка колона на базата данни). Това, разбира се, е очевидно, когато човек осъзнае, че входният файл не трябва да съдържа имена на полета и следователно би било невъзможно да се приеме последния подход при всякакви обстоятелства.

Следователно, вие искате:

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

Ще трябва също да добавите IGNORE 1 LINES към командата, за да пропуснете първия ред (с имена на полета):

$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. Включване на нарастваща стойност в този sql

  2. MySQL:Защо 5-ти идентификатор в клаузата IN драстично променя плана на заявката?

  3. Какъв формат е това?

  4. C# -- Извличане на данни от MySQL и подреждането им в страници без DataGridView

  5. Отдалечена MySQL връзка в PHP