Syntax
Gebruik LOAD DATA INFILE om grote hoeveelheid data in database te laden
Overweeg het volgende voorbeeld in de veronderstelling dat je een ‘;’-delimited CSV hebt om in je database te laden.
1;max;male;manager;12-7-19852;jack;male;executive;21-8-1990...1000000;marta;female;accountant;15-6-1992
Maak de tabel voor het invoegen.
Gebruik de volgende query om de waarden in die tabel in te voegen.
Overweeg het geval waarin het datumformaat niet standaard is.
1;max;male;manager;17-Jan-19852;jack;male;executive;01-Feb-1992...1000000;marta;female;accountant;25-Apr-1993
In dit geval kunt u het formaat van de dob
kolom wijzigen alvorens op deze manier in te voegen.
Dit voorbeeld van LOAD DATA INFILE specificeert niet alle beschikbare mogelijkheden.
U kunt hier meer referenties zien over LOAD DATA INFILE.
Emporteer een CSV-bestand in een MySQL tabel
Het volgende commando importeert CSV-bestanden in een MySQL tabel met dezelfde kolommen, met inachtneming van de CSV quoting en escaping regels.
Gegevens laden met doublures
Als u het LOAD DATA INFILE
commando gebruikt om een tabel te vullen met bestaande gegevens, zult u vaak merken dat de import mislukt door doublures. Er zijn verschillende manieren om dit probleem op te lossen.
Als deze optie in uw server is ingeschakeld, kan deze worden gebruikt om een bestand te laden dat op de clientcomputer bestaat in plaats van op de server. Een neveneffect is dat dubbele rijen voor unieke waarden worden genegeerd.
LOAD DATA LOCAL INFILE 'path of the file/file_name.txt' INTO TABLE employee
LOAD DATA INFILE ‘fname’ REPLACE
Wanneer het replace keyword wordt gebruikt zullen duplicaat unieke of primaire sleutels resulteren in de bestaande rij worden vervangen door nieuwe
LOAD DATA INFILE 'path of the file/file_name.txt' REPLACE INTO TABLE employee
LOAD DATA INFILE ‘fname’ IGNORE
Het tegenovergestelde van REPLACE
, bestaande rijen blijven behouden en nieuwe rijen worden genegeerd. Dit gedrag is vergelijkbaar met LOCAL
hierboven beschreven. Het bestand hoeft echter niet op de client computer te bestaan.
LOAD DATA INFILE 'path of the file/file_name.txt' IGNORE INTO TABLE employee
Laden via tussenliggende tabel
Soms kan het negeren of vervangen van alle duplicaten niet de ideale optie zijn. Het kan zijn dat je beslissingen moet nemen op basis van de inhoud van andere kolommen. In dat geval is de beste optie om te laden in een tussenliggende tabel en van daaruit over te zetten.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
import / export
import
SELECT a,b,c INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;
export
LOAD DATA INFILE 'result.txt' INTO TABLE table;