it-swarm.it

come aumentare la lunghezza di output della colonna sqlplus?

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 posso aumentare il con della colonna?

Ci ho provato 

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

Ma, ottenendo sempre lo stesso risultato.

Qualsiasi aiuto in effetti.

Grazie

48
Mohamed Saligh

Ho appena usato il seguente comando:

SET LIN[ESIZE] 200

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

MODIFICA: per chiarezza, i comandi validi sono SET LIN 200 o SET LINESIZE 200.

Funziona bene, 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 avvolgerà automaticamente la linea in qualunque sia impostata la proprietà "Dimensioni buffer Larghezza", indipendentemente dalle specifiche LINESIZE di SQL Plus.

Come suggerito da @simplyharsh, puoi anche configurare singole colonne per visualizzare le larghezze del set, usando COLUMN col_name FORMAT Ax (dove x è la lunghezza desiderata, in caratteri) - questo è utile se hai una o due colonne extra large e solo desidera mostrare un riepilogo dei loro valori nella schermata della console.

51
oliver-clare

Questa configurazione funziona 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 aiutato a evitare il troncamento a 80 caratteri.

26
Martin Irigaray

Prova questo

COLUMN col nome FORMAT A24

dove 24 sei larghezza.

12
simplyharsh

Su Linux prova questi:

set wrap off
set trimout ON
set trimspool on
set serveroutput on
set pagesize 0
set long 20000000
set longchunksize 20000000
set linesize 4000
7
M.R

Oltre a impostare LINESIZE, come suggerito da LordScree, è possibile specificare anche l'output in un file, per risolvere il problema con la larghezza della console. Ecco come lo faccio:

set linesize 15000;
spool myoutput.txt;
SELECT 
...
spool off;
4
Marcel

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 aggirare 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;

Sembrava che ci fosse un modo più semplice, ma non riuscivo a trovarlo.

2
William Fraser

Cosa uso:

set long 50000
set linesize 130

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

Oppure mi sfugge qualcosa? 

1
April Mc

Nessuno di questi suggerimenti funzionava per me. Finalmente ho trovato qualcos'altro che potevo fare - dbms_output.put_line. Per 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 qualcosa del genere. E questo funziona direttamente in sqlplus - non c'è bisogno di metterlo in un file separato o altro.

0
ArtOfWarfare