Zoeken…


Syntaxis

  1. GEGEVENS LADEN [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
  2. IN TABEL tbl_name
  3. [CHARACTER SET tekenset]
  4. [{FIELDS | COLUMNS} [BEËINDIGD DOOR 'string'] [[OPTIONEEL] GESLOTEN DOOR 'char']]
  5. [LIJNEN [BEGINNEN MET 'string'] [BEËINDIGD DOOR 'string']]
  6. [IGNORE nummer {LINES | RIJEN}]
  7. [(Col_name_or_user_var, ...)]
  8. [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;


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow