sql >> Database >  >> RDS >> Mysql

Laad een csv-bestand met specifieke kolommen met PDO

Zoals gedocumenteerd onder LOAD DATA INFILE Syntaxis :

Met andere woorden, de kolomlijst moet de databasekolommen beschrijven (of gebruikersvariabelen) waaraan elke de invoervelden moet worden toegewezen (in plaats van te beschrijven in welk invoerveld elke databasekolom kan worden gevonden). Dit is natuurlijk duidelijk wanneer men zich realiseert dat het invoerbestand geen veldnamen hoeft te bevatten en het dus onmogelijk zou zijn om de laatste benadering onder alle omstandigheden te gebruiken.

Daarom wil je:

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

Je moet ook IGNORE 1 LINES . toevoegen naar het commando om de eerste regel over te slaan (met veldnamen):

$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. MySQL SELECT DISTINCT moet hoofdlettergevoelig zijn?

  2. PHP:herhaal meerdere arrays en bouw SQL INSERT-query

  3. Is er een manier om Linq naar Oracle te gebruiken?

  4. 3 manieren om de tijdzone te retourneren van een datetime-waarde in Oracle