2013-03-18 23 views
8

uno dei problemi durante l'esecuzione di una lunga dichiarazione per visualizzare varie colonne per esempioOracle Larghezza colonna per tutte le colonne

select g.guestid, g.forename, g.surname, b.bookingid, 
b.arrivedate, b.departdate, br.floorno, br.roomno from... 

il dimensionamento colonna terminale Linux sembra essere un problema. Ad esempio il Forename VarChar (80) colonna occupa gran parte della larghezza dello schermo quando si esegue la dichiarazione di cui sopra e un modo per tagliarlo sarebbe attraverso:

SET COLUMN FORENAME FORMAT A10 

per esempio. Tuttavia, molte colonne dovrebbero essere ripetutamente sottoposte a questo, che è piuttosto lunga. vale a dire

SET COLUMN FORENAME FORMAT A10 
SET COLUMN SURNAME FORMAT A10 

e così via ...

C'è un modo per dire regolare la larghezza della colonna in base alla larghezza del testo in modo che ogni si adatta bene. e non come questo ..

enter image description here

io preferirei una soluzione che non comporta l'uso di funzioni.

+2

Provare a utilizzare gli strumenti della GUI anziché SQLPlus. La finestra del terminale non si adatta bene alla visualizzazione di datagrid. –

+0

@EgorSkriptunoff: dipende dal client della riga di comando;) SQL * Plus è davvero fastidioso per quanto riguarda questo. –

+0

Sì, i dati di Spark sono mostrati splendidamente sul terminale. – alexgbelov

risposta

-1

La sessione non sa quale sarà la lunghezza massima delle stringhe da restituire fino a quando non ha eseguito la query. Ovviamente la colonna dovrebbe essere dimensionata in modo appropriato, ma forse avrai davvero una lista di nomi che avrà una lunghezza di 80 caratteri, altrimenti la lunghezza del tuo tipo di dati sarà troppo grande.

Come dice Eric, gli strumenti della GUI sono migliori e lo SQL Developer di Oracle è gratuito e buono.

1

No, non esiste un modo semplice per rendere SQL * Plus "auto-regolare" la larghezza della colonna in larghezza del testo.

Tuttavia, lo scripting può semplificarti la vita.

Prima di tutto, ridurre la digitazione. Non fare SET COLUMN FORENAME FORMAT A10, fare qualcosa come @c forename 10 invece.

17:33:31 [email protected]> cl col 
columns cleared 
17:33:33 [email protected]> select * from dual; 

D 
- 
X 

Elapsed: 00:00:00.01 
17:33:37 [email protected]> @c dummy 10 
17:33:43 [email protected]> select * from dual; 

DUMMY 
---------- 
X 

Elapsed: 00:00:00.01 
17:33:45 [email protected]> get s:\c.sql 
    1* col &1. for a&2. 
17:33:50 [email protected]> 

o rapidamente nascondere ampie colonne in questo modo:

17:48:44 [email protected]> select owner, table_name from all_tables where rownum = 1; 

OWNER       TABLE_NAME 
------------------------------ ------------------------------ 
SYS       CON$ 

Elapsed: 00:00:00.24 
17:48:49 [email protected]> @np owner 
17:48:53 [email protected]> select owner, table_name from all_tables where rownum = 1; 

TABLE_NAME 
------------------------------ 
CON$ 

Elapsed: 00:00:00.26 
17:48:56 [email protected]> get s:\np 
    1 col &1 noprint 
    2* @undef 

Questi sono solo due dei molti script che uso su base giornaliera. Questo approccio richiede tempo e un po 'di attenzione personale alla personalizzazione per abituarsi e renderlo efficace, ma riduce la quantità di tasti che si preme in modo drammatico.

In secondo luogo, c'è glogin.sql. È uno script che viene eseguito ogni volta che ci si connette da qualche parte. Presumo che tu conosca un elenco di colonne "lunghe" che rendono le tue linee avvolgere.

Basta elencare loro c'è, e le tue

SET COLUMN FORENAME FORMAT A10 
SET COLUMN SURNAME FORMAT A10 

parametri delle colonne sarebbe impostare ogni volta che si (ri) collega.

0

Tom Kyte ha scritto un print_table procedure, che visualizza il set di risultati in modo verticale.

Ad esempio:

SQL> exec print_table('select g.guestid, g.forename, ... from ...') 
GUESTID      : 210 
FORENAME      : DINGLE 
... 
etc... 
.... 
----------------- 

PL/SQL procedure successfully completed. 

Questa procedura è utile soprattutto quando il set di risultati è piccolo, idealmente non più di forse 10 righe.

-1

Il formato SQL ansiconsole può essere quello che stai cercando.

set sqlformat ansiconsole; 
select g.guestid, g.forename, g.surname, b.bookingid, 
    b.arrivedate, b.departdate, br.floorno, br.roomno from... 

Oppure:

select /*ansiconsole*/ g.guestid, g.forename, g.surname, b.bookingid, 
    b.arrivedate, b.departdate, br.floorno, br.roomno from... 

questo formato colonne di auto-dimensioni per in base alla dimensione dei risultati della query.

+0

che non è sqlplus ma SQLcl – miracle173

0

Come già affermato da altri utenti, non esiste una soluzione semplice per sqlplus. Forse aiuta a usare il file glogin.sql o login.sql (@ René Nyffenegger ha fornito un article about those files). È possibile inserire le definizioni di colonna in questi file. Se si interroga sempre la stessa query o se si ha una denominazione coerente delle colonne, ciò può essere di aiuto.

Oppure si mettono le dichiarazioni di colonna in uno script che si chiamano da

@scriptname.sql 

se si desidera utilizzare il formato di colonna. Metti lo script in una directory che fa parte dello SQLPATH variable in modo che possa essere chiamato da qualsiasi directory.

Oppure si utilizza un altro strumento. Un utente alredy indicò SQLcl.

Problemi correlati