LOAD DATA – czyli import danych z pliku do bazy mysql – Kurs języka SQL

W niniejszym artykule dowiemy się jak w jaki sposób możemy załadować zawartość pliku do bazy mySQL. Dokonamy tego przy pomocy polecenia: LOAD DATA.

Jego składnia w podstawowej formie jest następująca:

LOAD DATA INFILE 'nazwa_pliku.txt' INTO TABLE nazwa_tabeli;

Powyższe zapytanie załaduje nam dane z pliku “nazwa_pliku.txt” do tabeli o nazwie “nazwa_tabeli”. W powyższym przypadku, jeżeli nie mamy dodatkowych parametrów pola w pliku muszą być rozdzielone znakiem tabulatora, nie powinny być ujęte w cudzysłów oraz znak entera musi być znakiem końca linii.

...
235 Adam Kowalski 210 15 pracownik produkcyjny
236 Piotr Testowy 112 25 pracownik ksiegowosci
...

Zatem dla tabeli pracownik zapytanie będzie miało następującą postać:

LOAD DATA INFILE 'pracownik_plik.txt' INTO TABLE pracownik;

Jeżeli chcielibyśmy określić parametry importu takiej jak separator (FIELDS TERMINATED BY), cudzysłów (ENCLOSED BY) czy znak końca linii (LINES TERMINATED) wtedy składnia polecenia będzie wyglądać następująco:

LOAD DATA INFILE 'nazwa_pliku.txt' INTO TABLE nazwa_tabeli FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

...
"235","Adam","Kowalski","210","15","pracownik produkcyjny"
"236","Piotr","Testowy","112","25","pracownik ksiegowosci"
...

Zatem dla pliku z separatorami (przecinek), gdzie wartości ujęte są w cudzysłowia polecenie przyjmuje postać:

LOAD DATA INFILE 'pracownik_plik_separator.txt' INTO TABLE pracownik FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Czasami zdarza się, że plik który chcemy załadować posiada tzw. linię nagłówka, której nie chcemy ładować do bazy danych. Oczywiście możemy skorzystać z dodatkowego parametru podczas ładowania pliku do bazy danych, który spowoduje że określona liczba linii (licząc od góry) nie zostanie załadowana do bazy danych. Wystarczy wtedy do na końcu polecenia dodać: IGNORE 1 LINES. Jeżeli chcielibyśmy pominąć większą liczbę linii wystarczy zamienić 1 na interesującą nas wartość. Składnia polecenia ładującego dane z pliku z pominięciem pierwszej linii będzie zatem następująca:

LOAD DATA INFILE 'pracownik_plik.txt' INTO TABLE pracownik IGNORE 1 LINES;


LOAD DATA INFILE 'nazwa_pliku.txt' INTO TABLE nazwa_tabeli FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;