INTO OUTFILE – jak wyładować wynik zapytania SQL do pliku (eksport mysql do pliku) – Kurs języka SQL (mySQL)

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"
...

1 comment to INTO OUTFILE – jak wyładować wynik zapytania SQL do pliku (eksport mysql do pliku) – Kurs języka SQL (mySQL)

  • Mariusz

    Problem polega na tym, że dostaje błąd ponieważ serwer działa z opcją –secure-file-priv i polecenie nie może zostać wykonane. Zapewne można to jakoś zmienić, ale prostej metody nigdzie nie znalazłem. Jestem odsyłany do zabawy z plikiem konfiguracyjnym. Tu się znowu okazuje, że takiego pliku u mnie nie ma, więc znowu poszukiwanie co zrobić żeby go stworzyć itd. Niby chcę prostej rzeczy – zapisania wyników do pliku i nie spodziewałem się, że w praktyce będzie to wielki problem.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>