Sök…


Syntax

  1. LADDA DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFIL "filnamn"
  2. IN TABELL tbl_name
  3. [CHARACTER SET charset]
  4. [{FELDS | COLUMNS} [TERMINATED BY 'string'] [[VALFRI] ENCLOSED BY 'char']]
  5. [LINJER [STARTAN AV 'sträng'] [TERMINERAD AV 'sträng']]
  6. [IGNORE nummer {LINJER | RADER}]
  7. [(Col_name_or_user_var, ...)]
  8. [SET col_name = expr, ...]

med hjälp av LADDA DATA INFIL för att ladda stora mängder data till databasen

Tänk på följande exempel om du antar att du har en ';' - avgränsad CSV som ska laddas i din databas.

1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992

Skapa tabellen för införande.

CREATE TABLE `employee` ( `id` INT NOT NULL ,
                          `name` VARCHAR NOT NULL, 
                          `sex` VARCHAR NOT NULL ,
                          `designation` VARCHAR NOT NULL ,
                          `dob` VARCHAR NOT NULL   );                              

Använd följande fråga för att infoga värdena i tabellen.

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)

Överväg fallet där datumformatet inte är standard.

1;max;male;manager;17-Jan-1985
2;jack;male;executive;01-Feb-1992
.
.
.
1000000;marta;female;accountant;25-Apr-1993

I detta fall kan du ändra formatet på dob kolumnen innan du sätter in så här.

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

Detta exempel på LADDA DATA INFIL anger inte alla tillgängliga funktioner.

Du kan se fler referenser på LADDA DATA INFIL här .

Importera en CSV-fil till en MySQL-tabell

Följande kommando importerar CSV-filer till en MySQL-tabell med samma kolumner med respekt för CSV-citering och undkommande regler.

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

Ladda data med dubbletter

Om du använder kommandot LOAD DATA INFILE att fylla en tabell med befintlig data kommer du ofta att importera misslyckas på grund av dubbletter. Det finns flera möjliga sätt att lösa problemet.

LADDA DATA LOCAL

Om det här alternativet har aktiverats på din server kan det användas för att ladda en fil som finns på klientdatorn snarare än på servern. En biverkning är att dubbla rader för unika värden ignoreras.

LOAD DATA LOCAL INFILE 'path of the file/file_name.txt' 
INTO TABLE employee

LADDA DATA INFILE "fname" Byt ut

När nyckelordet byts ut kommer duplikat unika eller primära nycklar att resultera i att den befintliga raden ersätts med nya

LOAD DATA INFILE 'path of the file/file_name.txt' 
REPLACE INTO TABLE employee

LADDA DATA INFIL "fname" IGNORE

Motsatsen till REPLACE , befintliga rader kommer att bevaras och nya ignoreras. Detta beteende liknar LOCAL beskrivs ovan. Filen behöver dock inte existera på klientdatorn.

LOAD DATA INFILE 'path of the file/file_name.txt' 
IGNORE INTO TABLE employee

Ladda via mellanbord

Ibland är det inte det perfekta alternativet att ignorera eller ersätta alla duplikat. Du kan behöva fatta beslut baserat på innehållet i andra kolumner. I så fall är det bästa alternativet att ladda in i en mellanhandstabell och överföra därifrån.

INSERT INTO employee SELECT * FROM intermediary WHERE ...

import Export

importera

SELECT a,b,c  INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;

Exportera

LOAD DATA INFILE 'result.txt' INTO TABLE table;


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow