2010-06-09 11 views
21

Desidero essere in grado di visualizzare i dati risultanti da una selezione in un modo carino, non tutte le colonne in altre.Come visualizzare i dati della tabella in modo più chiaro in oracle sqlplus

Qui è il modo sqlplus visualizza miei dati tabella:

enter image description here

ma voglio mostrare loro come:

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

Non ogni colonna sotto l'altro

+0

errr .. Voglio mostrare loro come un tavolo normale. uno dopo l'altro uno – Nubkadiya

risposta

43

solito inizia con qualcosa del tipo:

set lines 256 
set trimout on 
set tab off 

Dai un'occhiata a help set se hai installato le informazioni della guida. E poi select name,address anziché select * se vuoi davvero quelle due colonne.

+1

non funziona per Sqlplus. – user206168

+2

@ user206168 - la domanda riguardava SQL * Plus. Puoi espandere ciò che non funziona? –

+0

Qual è il punto di 'set space 1' e' set tab off '? – Coffee

38

Se vuoi dire che si desidera vederli in questo modo:

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

poi in SQL Inoltre è possibile impostare la larghezza delle colonne di questo tipo (per esempio):

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

è anche possibile specificare la dimensione della linea e la dimensione della pagina se necessario in questo modo:

set linesize 100 pagesize 50 

Si esegue questa operazione digitando tali comandi in SQL Inoltre prima di eseguire la query. Oppure puoi mettere questi comandi e la query in un file di script, ad es. myscript.sql ed eseguilo. Per esempio:

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

select name, address, telephone 
from mytable; 
+3

Inoltre vorremmo probabilmente "SET PAGESIZE 200' (dire) per ridurre la ripetizione delle intestazioni delle colonne in un grande set di risultati. – APC

+0

quindi questo dovrebbe essere fatto durante la creazione della tabella o per favore elobarate di più su questo – Nubkadiya

+0

Ho aggiornato la mia risposta –

1

nel caso tu abbia un dump fatto con sqlplus e l'uscita è confusa come qualcuno non ha definito questi 3 valori prima, c'è una via d'uscita.

Solo un paio d'ore fa l'amministratore di DB mi ha inviato quell'uscita dall'aspetto brutto della query eseguita in sqlplus (non so, forse mi odia ...). Dovevo trovare una via d'uscita: questo è uno script awk per analizzare quell'output per renderlo almeno più leggibile. Non è perfetto, ma non ho avuto abbastanza tempo per lucidarlo correttamente. Ad ogni modo, fa abbastanza bene il lavoro.

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}' 

Nel caso in cui chiunque altro vorrebbe provare migliorare questo script, di seguito sono le variabili: hnames - i nomi delle colonne nell'intestazione, hdash - tratteggiata sotto l'intestazione, h - se sto attualmente parsing header (then == 1), val - the data, _d - - scambiare tra hnames e hdash, ln0 - l 'ultima riga letta, ln1 - letta riga in precedenza (è quella con cui sto effettivamente lavorando), ln2 - riga letta prima ln1

Happy parsing!

Ah, quasi dimenticavo ... Io lo uso per abbellire uscita sqlplus me stesso:

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

colsep è facoltativo, ma rende aspetto uscita come SQLite che è più facile da analizzare utilizzando script.

EDIT: una piccola anteprima della produzione analizzati e non analizzato

A little preview of parsed and non-parsed output

Problemi correlati