2011-09-12 14 views
44

Ho alcune query per scoprire il ddl di alcuni oggetti da uno schema. Sto ottenendo che le colonne dei risultati vengano troncate al centro delle query.come aumentare la lunghezza di output della colonna sqlplus?

Come posso aumentare il con della colonna?

ho provato con

SET SERVEROUTPUT ON SIZE 1000000; 
SET LINESIZE 50000; 
set pagesize 50000; 
set long 50000; 

Ma, ancora ottenere lo stesso risultato.

Qualsiasi aiuto in effetti.

Grazie

risposta

44

Ho appena utilizzato il seguente comando:

SET LIN[ESIZE] 200 

(da http://ss64.com/ora/syntax-sqlplus-set.html).

Questo funziona correttamente, ma è necessario assicurarsi che la finestra della console sia sufficientemente ampia. Se stai utilizzando SQL Plus direttamente dal Prompt dei comandi di MS Windows, la finestra della console ricopre automaticamente la riga in qualunque sia la proprietà "Dimensione buffer schermo Larghezza", indipendentemente dalle specifiche SQL Plus LINESIZE.

Come suggerito da @simplyharsh, è anche possibile configurare singole colonne per visualizzare le larghezze set, utilizzando COLUMN col_name FORMAT Ax (dove x è la lunghezza desiderata, in caratteri) - questo è utile se si dispone di uno o due grandi colonne in più e vuoi solo mostrare un riepilogo dei loro valori nella schermata della console.

+1

re "Se ... SQL Plus direttamente da Prompt dei comandi di MS Windows ... "Ho trovato che" set longchunksize 1000 "ha funzionato il troncamento fisso a 80 per me su Windows – Straff

10

Prova questo

COLONNA nome_col FORMAT A24

dove 24 è si di larghezza.

+1

buon, ma se do A70. stampa 70 caratteri per riga. Ma, ne do più di 80, stampa 80 caratteri solo per riga: (( –

+2

sei sicuro che non è il tuo terminale che lo avvolge? –

+0

Sì, certo uomo :( –

4

In aggiunta all'impostazione di LINESIZE, come suggerito da LordScree, è possibile specificare l'output in un file, per risolvere il problema con la larghezza della console. Ecco come faccio:

set linesize 15000; 
spool myoutput.txt; 
SELECT 
... 
spool off; 
2

In realtà, anche quello non ha funzionato per me. Quando eseguo "seleziona dbms_metadata.get_ddl ('TABLESPACE', 'TABLESPACE_NAME') da doppio;" Ho ottenuto di nuovo solo le prime tre righe, ma questa volta ogni riga è stata estesa a 15.000 caratteri. Sono stato in grado di ovviare a questo con:

select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),80) from dual; 
select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),160) from dual; 
select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),240) from dual; 

Di certo sembrava che ci dovrebbe essere un modo più semplice, ma non riuscivo a trovarlo.

25

Questa configurazione sta lavorando per me:

set termout off 
set verify off 
set trimspool on 
set linesize 200 
set longchunksize 200000 
set long 200000 
set pages 0 
column txt format a120 

La definizione del formato column con l'opzione linesize ha contribuito a evitare il troncamento a 80 caratteri.

-4

Su Windows si può provare questo:

  • destro del mouse nella finestra di sqlplus
  • selezionare Proprietà -> Layout
  • aumento larghezza dimensione del buffer dello schermo per 1000
1

Quello che ho utilizzare:

set long 50000 
set linesize 130 

col x format a80 word_wrapped; 
select dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA') x from dual; 

O mi sto perdendo qualcosa?

7

Su linux, provare questi.

  • set avvolgere fuori
  • set trimout ON
  • set trimspool su
  • set serveroutput su
  • set pagesize 0
  • impostare lungo 20000000
  • set longchunksize 20000000
  • set linesize 4000
+1

grazie, il set wrap off ha fatto il trucco per me. – tester

0

Nessuno di questi suggerimenti funzionava per me. Finalmente ho trovato qualcos'altro che potevo fare - dbms_output.put_line. Ad esempio:

SET SERVEROUTPUT ON 
begin 
for i in (select dbms_metadata.get_ddl('INDEX', index_name, owner) as ddl from all_indexes where owner = 'MYUSER') loop 
    dbms_output.put_line(i.ddl); 
end loop; 
end; 
/

Boom. Ha stampato tutto quello che volevo - niente troncare o niente del genere. E questo funziona direttamente in sqlplus - non c'è bisogno di metterlo in un file separato o altro.