Polecenie SELECT ... INTO OUTFILE 'nazwa_pliku' zapisuje zwracane przez SELECT wiersze do pliku o nazwie nazwa_pliku. Plik jest tworzony na serwerze z bazą danych, więc dany użytkownik musi mieć odpowiednie prawa do zapisywania plików na serwerze.
Plik o nazwie nazwa_pliku nie może wcześniej istnieć, co zabezpiecza chociażby takie pliki jak /etc/passwd przed zniszczeniem ich zawartości. Wyrażenie SELECT ... INTO OUTFILE jest przeznaczone głównie do szybkiego zapisania zawartości tablicy w pliku na serwerze bazodanowym. Jeśli zamierzamy wyniki wykonania polecenia SELECT zapisać w pliku na serwerze klienta, to należy posłużyć się raczej komendą z listingu 1.0.
Możemy użyć odpowiednich opcji w poleceniu SELECT ... INTO OUTFILE, mianowicie:
Przykład takiego wykorzystanie jest widoczny na Listingu 2.0.
-
Uwaga! Jakikolwiek plik utworzony w wyniku wydania polecenia INTO OUTFILE lub INTO DUMPFILE jest tworzony z prawami pisania w nim przez wszystkich użytkowników systemu na serwerze bazodanowym.
-
Jeśli zamiast SELECT ... INTO OUTFILE użyjemy polecenia SELECT ... INTO DUMPFILE MySQL zapisze w pliku tylko jedną długą linię, a więc bez jakichkolwiek znaków końca linii czy kolumny. Jest to użyteczne w przypadku używania danych typu BLOB.
Listing
mysql -e "SELECT ..." > nazwa_pliku
--Listing 2.0: zapisuje wyniki z tabeli test_tab do pliku o nazwie wynik.txt, pola są oddzielane przecinkiem, dodatkowo każda wartośc jest w podwójny cudzysłowie oraz znaki łamiące linie to \n
SELECT a,b,a+b INTO OUTFILE '/tmp/wynik.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_tab;
Ranga: Administrator serwisu Punktów: 0