Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laden Sie eine CSV-Datei mit bestimmten Spalten mit PDO

Wie unter LOAD DATA INFILE dokumentiert Syntax :

Mit anderen Worten, die Spaltenliste sollte die Datenbankspalten beschreiben (oder Benutzervariablen) zu denen jeweils die Eingabefelder gehören zugewiesen werden soll (anstatt zu beschreiben, in welchem ​​Eingabefeld sich welche Datenbankspalte befindet). Dies ist natürlich offensichtlich, wenn man bedenkt, dass die Eingabedatei keine Feldnamen enthalten muss und es daher unmöglich wäre, den letzteren Ansatz unter allen Umständen zu übernehmen.

Daher möchten Sie:

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

Sie müssen auch IGNORE 1 LINES hinzufügen zum Befehl, um die erste Zeile (mit Feldnamen) zu überspringen:

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