oracle sqlplus - ghdrako/doc_snipets GitHub Wiki
- https://blog.mclaughlinsoftware.com/2021/05/25/sqlplus-tutorial/
- https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/SQL-Plus-quick-start.html
- https://holowczak.com/oracle-sqlplus-tutorial/19/
Polecenie | Opis |
---|---|
A[PPEND] tekst | Dołącza tekst do bieżącego wiersza |
C[HANGE] /stary/nowy | Zmienia tekst określany przez stary na tekst nowy |
CL[EAR] BUFF[ER] | Usuwa wszystkie wiersze z bufora |
D | |
DEL | Usuwa bieżący wiersz |
DEL x | Usuwa wiersz określany przez liczbę x (wiersze są numerowane od 1) |
L[IST] | Wyświetla listę wszystkich wierszy przechowywanych w buforze |
L[IST] x | Wyświetla wiersz nr x |
R[UN] lub / | Uruchamia instrukcję przechowywaną w buforze. Można do tego użyć również polecenia / |
x | Wiersz x staje się bieżący |
SQL> SET COLSEP ','
SET ECHO OFF
SET FEEDBACK OFF
SET TERMOUT OFF
SET PAGESIZE 32766
SET LINESIZE 200
SET VERIFY OFF
SET TERM OFF
SET TRIMSPOOL ON
SET HEADING OFF
SPOOL emp.csv
SELECT * FROM hr.employees;
SPOOL OFF
Output
100,Steven ,King ,SKING ,515.123.4567
$ cat emp.csv | awk '$1=$1' | sed -e 's/,\s\+/,/g' | sed -e 's/\s\+,/,/g' | awk '!a[$0]++' > emp_final.csv
!df -h
Dziala bardzo wolno zrzut do pliku:
sqlplus -s "${USER}/${PASS}@${DB}" <<EOF > "$OUTPUT_FILE"
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF TRIMSPOOL ON
${SQL_QUERY}
EXIT;
EOF
Szybciej dziala uzycie SOOL-a
sqlplus -s "${USER}/${PASS}@${DB}" <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF TRIMSPOOL ON
SPOOL $OUTPUT_FILE
${SQL_QUERY}
SPOOL OFF
EXIT;
EOF
Konfiguracja
SET PAGESIZE 0
SET LINESIZE 32767
SET LONG 50000
SET LONGCHUNKSIZE 50000
SET TRIMSPOOL ON
SET FEEDBACK OFF
SET ECHO OFF
SET HEADING OFF
SET TERMOUT OFF
-
SET PAGESIZE 0
- Usuwa przerwy stron i nagłówki kolumn co X wierszy.
- Dzięki temu dane lecą "ciągiem" – bez pustych linii i powtarzanych nagłówków.
- Najważniejsze przy eksportach.
-
SET LINESIZE 32767
- Ustawia maksymalną długość jednej linii.
- Zapobiega łamania długich wierszy na kilka linii.
- 32767 to maksymalna wartość w SQL*Plus.
-
SET LONG 50000
- Określa ile znaków pola typu LONG lub CLOB może zostać wyświetlone.
- Domyślnie jest bardzo mało – 80 znaków (!), więc bez tego długie teksty byłyby obcięte.
-
SET LONGCHUNKSIZE 50000
- Kontroluje rozmiar porcji (chunk) przy odczycie pól LONG/CLOB.
- Pomaga przy pełnym zrzucie dużych kolumn tekstowych, zwiększa wydajność.
-
SET TRIMSPOOL ON
- Usuwa końcowe spacje z każdej linii wypisywanej do pliku (spool).
- Bardzo przydatne przy CSV lub plikach, gdzie nie chcesz śmieci na końcu linii.
-
SET FEEDBACK OFF
- Wyłącza komunikat typu:
12 rows selected.
- Dzięki temu nie masz "śmieci" w pliku wynikowym.
- Wyłącza komunikat typu:
-
SET ECHO OFF
- Nie wyświetla treści zapytań w wynikach.
- Gdy masz dużo SELECT, INSERT, BEGIN, itd. – nie będą wypisywane.
-
SET HEADING OFF
- Wyłącza nagłówki kolumn w wynikach zapytań.
- Idealne przy eksportach danych do pliku.
-
SET TERMOUT OFF
- Nie pokazuje wyników zapytań w terminalu, tylko np. do spoola.
- Przyspiesza działanie, szczególnie przy dużych zbiorach danych.
- Uwaga: działa tylko w skryptach (nie w interaktywnej sesji).