Szukaj…


Składnia

  1. ZAŁADUJ DANE [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE „nazwa_pliku”
  2. INTO TABLE nazwa_bloku
  3. [ZESTAW ZNAKÓW]
  4. [{POLA | COLUMNS} [ZAKOŃCZONE PRZEZ „ciąg”] [[OPCJONALNIE] OBEJMOWANE PRZEZ „char”]]
  5. [LINIE [STARTING BY „string”] [TERMINATED BY „string”]]
  6. [IGNORE number {LINES | WYDZIWIANIE}]
  7. [(nazwa_kolumny_lub_użytkownik, ...)]
  8. [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;


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow