INTO OUTFILE – jak zapisać wynik zapytania SQL do pliku (eksport mysql do pliku) – Kurs języka SQL

W niniejszym artykule dowiemy się jak możemy wyładować wynik dowolnego zapytania SQL do pliku tekstowego czy pliku CSV. Dokonamy tego przy pomocy polecenia: INTO OUTFILE.

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

SELECT nazwy_kolumny1,nazwy_kolumny2...,nazwy_kolumnyN from tabela INTO OUTFILE 'nazwa_pliku.txt';

W powyższym przykładzie (bez parametrów) zrzucone dane będą oddzielone między sobą znakiem tabulatora.

Czyli dla tabeli pracownik będzie to zapytanie:

select * from pracownik INTO OUTFILE 'pracownik_plik.txt';

a zrzucony plik będzie miał następującą strukturę – dane rozdzielone znakiem tabulatora:

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

Oczywiście przy eksporcie danych do pliku możemy określić separator pomiędzy polami (FIELDS TERMINATED BY) oraz czy pola są zamknięte w cudzysłów (ENCLOSED BY) oraz znak końca linii (LINES TERMINATED).

Składnia polecenia z parametrami: separatora, cudzysłowia oraz znaku końca wiersza jest następująca:

SELECT nazwy_kolumny1, nazwy_kolumny2..., nazwy_kolumnyN FROM tabela INTO OUTFILE 'nazwa_pliku.txt'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Spójrzmy zatem na przykład polecenia wyładowania danych do pliku z powyższymi parametrami (separatorem jest przecinek, pola są umieszczone w cudzysłowiu,
znakiem końca linii jest enter (\n)).

SELECT * FROM pracownik INTO OUTFILE 'pracownik_plik_separator.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Zawartość pliku jest następująca:

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