oracle sqlplus - ghdrako/doc_snipets GitHub Wiki

Polecenia edycji komendy

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

Export to csv

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

Uruchomienie polecenia basha

!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.
  • 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).
⚠️ **GitHub.com Fallback** ⚠️