2011-09-12 19 views
44

Tengo algunas consultas para averiguar el ddl de algunos objetos de un esquema. Estoy obteniendo las columnas de resultados truncadas en medio de las consultas.cómo aumentar la longitud de salida de la columna sqlplus?

¿Cómo puedo aumentar el tamaño de la columna?

he intentado con

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

Pero, aún así conseguir el mismo resultado.

Cualquier ayuda de hecho.

Gracias

Respuesta

44

he acabo de utilizar el siguiente comando:

SET LIN[ESIZE] 200 

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

Esto funciona bien, pero debe asegurarse de que la ventana de la consola sea lo suficientemente amplia. Si usa SQL Plus directamente desde el símbolo del sistema de MS Windows, la ventana de la consola automáticamente ajustará la línea a la propiedad "Tamaño del búfer de pantalla Ancho" configurada independientemente de cualquier especificación SQL Plus LINESIZE.

Como sugiere @simplyharsh, también se puede configurar columnas individuales para mostrar anchuras determinadas, utilizando COLUMN col_name FORMAT Ax (donde x es la longitud deseada, en caracteres) - Esto es útil si usted tiene uno o dos grandes columnas adicionales y solo desea mostrar un resumen de sus valores en la pantalla de la consola.

+1

re "Si ... SQL Plus directo desde MS Windows Command Prompt ... "Encontré ese truncamiento fijo" set longchunksize 1000 "pasando a 80 para mí en Windows – Straff

10

Prueba este

COLUMNA col_name FORMATO A24

donde 24 es que la anchura.

+1

si bueno, pero si doy A70. imprime 70 caracteres por línea. Pero, doy más de 80, imprime 80 caracteres solo por línea: (( –

+2

¿está seguro de que no es su terminal que lo envuelve? –

+0

Sí, por supuesto hombre :( –

4

Además de configurar LINESIZE, como sugirió LordScree, también podría especificar la salida a un archivo, para solucionar el problema con el ancho de la consola. He aquí cómo lo hago:

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

En realidad, incluso eso no funcionó para mí. Cuando ejecuté "seleccione dbms_metadata.get_ddl ('TABLESPACE', 'TABLESPACE_NAME') desde dual;" Nuevamente obtuve solo las primeras tres líneas, pero esta vez cada línea estaba acolchada a 15,000 caracteres. Yo era capaz de solucionar esto 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; 

Seguro que parecía que no debería ser una manera más fácil, pero yo no era capaz de encontrarlo.

25

Esta configuración funciona para mí:

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 definición column formato con la opción linesize ayudó a evitar el truncamiento en 80 caracteres.

-4

En Windows es posible que intente esto:

  • haga clic derecho en la ventana de sqlplus
  • seleccione Propiedades -> diseño
  • aumento de la anchura del tamaño de búfer de pantalla a 1000
1

Lo que utilizar:

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 me estoy perdiendo algo?

7

En Linux, pruebe estos.

  • conjunto envolver fuera
  • conjunto trimout EN
  • conjunto trimspool en
  • conjunto serveroutput en
  • conjunto tamañopágina 0
  • establecer a largo 20000000
  • conjunto longchunksize 20000000
  • conjunto LINESIZE 4000
+1

gracias, el wrap-off hizo el truco para mí. – tester

0

Ninguna de estas sugerencias funcionaba para mí. Finalmente encontré algo más que podía hacer: dbms_output.put_line. Por ejemplo:

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. Imprimió todo lo que quería, sin truncar ni nada de eso. Y eso funciona directamente en sqlplus - sin necesidad de ponerlo en un archivo separado ni nada.

Cuestiones relacionadas