MySQL
LAAD GEGEVENS INFILE
Zoeken…
Syntaxis
- GEGEVENS LADEN [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
- IN TABEL tbl_name
- [CHARACTER SET tekenset]
- [{FIELDS | COLUMNS} [BEËINDIGD DOOR 'string'] [[OPTIONEEL] GESLOTEN DOOR 'char']]
- [LIJNEN [BEGINNEN MET 'string'] [BEËINDIGD DOOR 'string']]
- [IGNORE nummer {LINES | RIJEN}]
- [(Col_name_or_user_var, ...)]
- [SET col_name = expr, ...]
met LOAD DATA INFILE om een grote hoeveelheid gegevens in de database te laden
Overweeg het volgende voorbeeld, ervan uitgaande dat u een ';' - gescheiden CSV hebt om in uw database te laden.
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992
Maak de tabel voor invoeging.
CREATE TABLE `employee` ( `id` INT NOT NULL ,
`name` VARCHAR NOT NULL,
`sex` VARCHAR NOT NULL ,
`designation` VARCHAR NOT NULL ,
`dob` VARCHAR NOT NULL );
Gebruik de volgende query om de waarden in die tabel in te voegen.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,dob)
Overweeg het geval waarbij het datumformaat niet standaard is.
1;max;male;manager;17-Jan-1985
2;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 voordat u op deze manier invoegt.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,@dob)
SET date = STR_TO_DATE(@date, '%d-%b-%Y');
Dit voorbeeld van LOAD DATA INFILE geeft niet alle beschikbare functies op.
U kunt meer referenties bekijk op LOAD DATA INFILE hier .
Importeer een CSV-bestand in een MySQL-tabel
De volgende opdracht importeert CSV-bestanden in een MySQL-tabel met dezelfde kolommen met inachtneming van CSV-aanhalingstekens en escapeningsregels.
load data infile '/tmp/file.csv'
into table my_table
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\n'
ignore 1 lines; -- skip the header row
Laad gegevens met duplicaten
Als u de opdracht LOAD DATA INFILE
om een tabel met bestaande gegevens te vullen, zult u vaak zien dat de import mislukt vanwege duplicaten. Er zijn verschillende manieren om dit probleem op te lossen.
DATA LOCAL LADEN
Als deze optie op uw server is ingeschakeld, kan deze worden gebruikt om een bestand op de clientcomputer te laden 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
LAAD DATA INFILE 'fname' VERVANG
Wanneer het sleutelwoord vervangen wordt gebruikt, zullen dubbele unieke of primaire sleutels ertoe leiden dat de bestaande rij wordt vervangen door nieuwe
LOAD DATA INFILE 'path of the file/file_name.txt'
REPLACE INTO TABLE employee
LAAD DATA INFILE 'fname' IGNORE
Het tegenovergestelde van REPLACE
, bestaande rijen blijven behouden en nieuwe worden genegeerd. Dit gedrag is vergelijkbaar met LOCAL
dat hierboven is beschreven. Het bestand hoeft echter niet op de clientcomputer te bestaan.
LOAD DATA INFILE 'path of the file/file_name.txt'
IGNORE INTO TABLE employee
Laden via tussentabel
Soms is het negeren of vervangen van alle duplicaten misschien niet de ideale optie. Mogelijk moet u beslissingen nemen op basis van de inhoud van andere kolommen. In dat geval is de beste optie om in een intermediaire tabel te laden en van daaruit over te zetten.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
importeren / exporteren
importeren
SELECT a,b,c INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;
Exporteren
LOAD DATA INFILE 'result.txt' INTO TABLE table;