MySQL
ZAŁADUJ DANE INFILE
Szukaj…
Składnia
- ZAŁADUJ DANE [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE „nazwa_pliku”
- INTO TABLE nazwa_bloku
- [ZESTAW ZNAKÓW]
- [{POLA | COLUMNS} [ZAKOŃCZONE PRZEZ „ciąg”] [[OPCJONALNIE] OBEJMOWANE PRZEZ „char”]]
- [LINIE [STARTING BY „string”] [TERMINATED BY „string”]]
- [IGNORE number {LINES | WYDZIWIANIE}]
- [(nazwa_kolumny_lub_użytkownik, ...)]
- [SET nazwa_kolumny = wyra ...]
za pomocą LOAD DATA INFILE w celu załadowania dużej ilości danych do bazy danych
Rozważ następujący przykład, zakładając, że masz CSV z separatorem „;” do załadowania do bazy danych.
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992
Utwórz tabelę do wstawienia.
CREATE TABLE `employee` ( `id` INT NOT NULL ,
`name` VARCHAR NOT NULL,
`sex` VARCHAR NOT NULL ,
`designation` VARCHAR NOT NULL ,
`dob` VARCHAR NOT NULL );
Użyj następującego zapytania, aby wstawić wartości do tej tabeli.
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)
Rozważ przypadek, w którym format daty jest niestandardowy.
1;max;male;manager;17-Jan-1985
2;jack;male;executive;01-Feb-1992
.
.
.
1000000;marta;female;accountant;25-Apr-1993
W takim przypadku możesz zmienić format kolumny dob
przed wstawieniem w ten sposób.
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');
W tym przykładzie LOAD DATA INFILE nie określono wszystkich dostępnych funkcji.
Więcej informacji na temat LOAD DATA INFILE można znaleźć tutaj .
Zaimportuj plik CSV do tabeli MySQL
Poniższe polecenie importuje pliki CSV do tabeli MySQL z tymi samymi kolumnami, przestrzegając przy tym reguł cytowania i ucieczki CSV.
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
Załaduj dane z duplikatami
Jeśli użyjesz polecenia LOAD DATA INFILE
aby zapełnić tabelę istniejącymi danymi, często okaże się, że import nie powiedzie się z powodu duplikatów. Istnieje kilka możliwych sposobów rozwiązania tego problemu.
ZAŁADUJ DANE LOKALNIE
Jeśli ta opcja została włączona na serwerze, można jej użyć do załadowania pliku, który istnieje na komputerze klienckim, a nie na serwerze. Efektem ubocznym jest ignorowanie duplikatów wierszy dla unikalnych wartości.
LOAD DATA LOCAL INFILE 'path of the file/file_name.txt'
INTO TABLE employee
ZAŁADUJ DANE INFILE „fname” WYMIANA
Gdy użyte zostanie słowo kluczowe replace, klucze unikatowe lub podstawowe zostaną zastąpione istniejącym wierszem nowym
LOAD DATA INFILE 'path of the file/file_name.txt'
REPLACE INTO TABLE employee
ZAŁADUJ DANE INFILE „fname” IGNORE
W przeciwieństwie do REPLACE
, istniejące wiersze zostaną zachowane, a nowe zignorowane. To zachowanie jest podobne do LOCAL
opisanego powyżej. Plik nie musi jednak istnieć na komputerze klienckim.
LOAD DATA INFILE 'path of the file/file_name.txt'
IGNORE INTO TABLE employee
Załaduj za pomocą tabeli pośredniej
Czasami ignorowanie lub zastępowanie wszystkich duplikatów może nie być idealną opcją. Może być konieczne podejmowanie decyzji na podstawie zawartości innych kolumn. W takim przypadku najlepszą opcją jest załadowanie do tabeli pośredniej i przeniesienie z niej.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
import Eksport
import
SELECT a,b,c INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;
Eksport
LOAD DATA INFILE 'result.txt' INTO TABLE table;