2010-06-09 10 views
21

Chcę być w stanie wyświetlić wynikowe dane z wyboru w ładny sposób, nie wszystkie kolumny pod innymi.Jak wyświetlać dane tabeli jaśniej w Oracle sqlplus

Oto sposób SQLPLUS wyświetla moich danych tabeli:

enter image description here

Ale chcę, aby pokazać im jak:

Name | Address | Phone | 
-------+---------------+-------------+ 
name1 | address1 | phone1 | 
name2 | address2 | phone2 | 
name3 | address3 | phone3 | 

Nie każda kolumna pod innym

+0

eeee .. Chcę im pokazać, tak jak zwykły stół. jeden po drugim – Nubkadiya

Odpowiedz

43

zwykle zacznij od czegoś takiego:

set lines 256 
set trimout on 
set tab off 

Jeśli masz zainstalowane informacje pomocy, zajrzyj na stronę help set. A następnie select name,address zamiast select *, jeśli naprawdę chcesz tylko te dwie kolumny.

+1

nie działa dla Sqlplus. – user206168

+2

@ user206168 - pytanie dotyczyło SQL * Plus. Czy możesz rozwinąć to, co nie działa? –

+0

Jaki jest sens "set space 1" i "set tab off"? – Coffee

38

Jeśli masz na myśli chcesz zobaczyć je tak:

WORKPLACEID NAME  ADDRESS  TELEPHONE 
----------- ---------- -------------- --------- 
      1 HSBC  Nugegoda Road  43434 
      2 HNB Bank Colombo Road  223423 

następnie w SQL * Plus można ustawić szerokości kolumn tak (przykładowo):

column name format a10 
column address format a20 
column telephone format 999999999 

Można również określić rozmiar linii i rozmiar strony, jeśli to konieczne:

set linesize 100 pagesize 50 

Robisz to, wpisując te polecenia w SQL Plus przed uruchomieniem zapytania. Możesz też umieścić te polecenia i zapytanie w pliku skryptu, np. myscript.sql i uruchom to. Na przykład:

column name format a10 
column address format a20 
column telephone format 999999999 

select name, address, telephone 
from mytable; 
+3

Również prawdopodobnie zechcemy "USTAWIĆ PAGESIZE 200" (na przykład), aby ograniczyć powtarzanie nagłówków kolumn w dużym zestawie wyników. – APC

+0

więc należy to zrobić podczas tworzenia tabeli lub można proszę elobarate więcej na ten – Nubkadiya

+0

I zostały zaktualizowane moją odpowiedź –

1

W przypadku gdy masz zrzut wykonany z sqlplus i wyjście jest zniekształcony jak ktoś nie wcześniej ustawić te wartości 3, nie ma wyjścia.

Kilka godzin temu administrator DB wysłał mi brzydko wyglądający wynik zapytania wykonanego w sqlplus (nie wiem, może mnie nienawidzi ...). Musiałem znaleźć wyjście: jest to skrypt awk, który analizuje dane wyjściowe, aby był co najmniej bardziej czytelny. To nie jest perfekcyjne, ale nie miałem wystarczająco dużo czasu, żeby go właściwie wypolerować. W każdym razie wykonuje to całkiem dobrze.

awk ' function isDashed(ln){return ln ~ /^---+/};function addLn(){ln2=ln1; ln1=ln0;ln0=$0};function isLoaded(){return l==1||ln2!=""}; function printHeader(){hdr=hnames"\n"hdash;if(hdr!=lastHeader){lastHeader=hdr;print hdr};hnames="";hdash=""};function isHeaderFirstLn(){return isDashed(ln0) && !isDashed(ln1) && !isDashed(ln2) }; function isDataFirstLn(){return isDashed(ln2)&&!isDashed(ln1)&&!isDashed(ln0)}       BEGIN{_d=1;h=1;hnames="";hdash="";val="";ln2="";ln1="";ln0="";fheadln=""}         { addLn(); if(!isLoaded()){next}; l=1;    if(h==1){if(!isDataFirstLn()){if(_d==0){hnames=hnames" "ln1;_d=1;}else{hdash=hdash" "ln1;_d=0}}else{_d=0;h=0;val=ln1;printHeader()}}else{if(!isHeaderFirstLn()){val=val" "ln1}else{print val;val="";_d=1;h=1;hnames=ln1}} }END{if(val!="")print val}' 

W przypadku, ktoś chciałby spróbować poprawić ten skrypt, poniżej są zmienne: hnames - nazwy kolumn w nagłówku, hdash - przerywana poniżej nagłówka, h - czy jestem obecnie parsowania nagłówek (wtedy == 1), val - dane, _d - - aby zamienić między hnames i hdash, ln0 - ostatnia linia read, ln1 - linia poprzednio przeczytana (to ta, z którą pracuję), ln2 - wiersz przeczytany przed ln1

Happy parsing!

Aha, zapomniałbym ... Używam tego do prettify wyświetlamy SQLPLUS sobie:

[[email protected] ~]$ cat prettify_sql 
set lines 256 
set trimout on 
set tab off 
set pagesize 100 
set colsep " | " 

colsep jest opcjonalne, ale sprawia, że ​​wyjście wygląda jak SQLite, który jest łatwiejszy do analizy za pomocą skryptów.

EDIT: Trochę podgląd analizowany i nie analizowany wyjściu

A little preview of parsed and non-parsed output

Powiązane problemy