MySQL
LADDA DATA INFIL
Sök…
Syntax
- LADDA DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFIL "filnamn"
- IN TABELL tbl_name
- [CHARACTER SET charset]
- [{FELDS | COLUMNS} [TERMINATED BY 'string'] [[VALFRI] ENCLOSED BY 'char']]
- [LINJER [STARTAN AV 'sträng'] [TERMINERAD AV 'sträng']]
- [IGNORE nummer {LINJER | RADER}]
- [(Col_name_or_user_var, ...)]
- [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;