Mysql
 sql >> Database >  >> RDS >> Mysql

Carica un file CSV con colonne specifiche usando PDO

Come documentato in LOAD DATA INFILE Sintassi :

In altre parole, l'elenco delle colonne dovrebbe descrivere le colonne del database (o variabili utente) a cui ciascuno i campi di input dovrebbe essere assegnato (piuttosto che descrivere in quale campo di input può essere trovata ciascuna colonna del database). Questo è, ovviamente, ovvio quando ci si rende conto che il file di input non deve necessariamente contenere nomi di campo e quindi sarebbe impossibile adottare quest'ultimo approccio in tutte le circostanze.

Pertanto, vuoi:

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

Dovrai anche aggiungere IGNORE 1 LINES al comando per saltare la prima riga (con i nomi dei campi):

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