как увеличить выходную длину столбца sqlplus?

У меня есть несколько запросов, чтобы узнать ddl некоторых объектов из схемы. Я получаю, что столбцы результатов усекаются в середине запросов.

Как я могу увеличить с колонны?

Я пробовал с

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

но, по-прежнему получая тот же результат.

любая помощь действительно.

спасибо

9 ответов


Я только что использовал следующую команду:

SET LIN[ESIZE] 200

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

это работает нормально, но вы должны убедиться, что окно консоли достаточно широко. Если вы используете SQL Plus direct из командной строки MS Windows, окно консоли автоматически обернет строку независимо от " размера буфера экрана ширина" свойство имеет значение, независимо от любого SQL Plus LINESIZE спецификация.

как предложено @simplyharsh, вы также можете настроить отдельные столбцы для отображения ширины набора, используя COLUMN col_name FORMAT Ax (где x - это желаемая длина в символах) - это полезно, если у вас есть один или два дополнительных больших колонн, и вы просто хотите, чтобы показать их значений на экране консоли.


эта конфигурация работает для меня:

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

на column определение формата с помощью linesize опция помогла избежать усечения на 80 символов.


попробуй такое

столбец col_name формат A24

где 24 вы ширина.


в Linux попробуйте следующее:

set wrap off
set trimout ON
set trimspool on
set serveroutput on
set pagesize 0
set long 20000000
set longchunksize 20000000
set linesize 4000

В дополнение к настройке размера строки, как предложил LordScree, вы также можете указать вывод в файл, чтобы преодолеть проблему с шириной консоли. Вот как я это делаю:

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

на самом деле, даже это не сработало для меня. Когда я выполнил "выберите dbms_metadata.get_ddl ('TABLESPACE',' TABLESPACE_NAME') от dual;" я снова получил только первые три строки, но на этот раз каждая строка была дополнена до 15 000 символов. Я смог обойти это:

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;

Как использовать:

set long 50000
set linesize 130

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

или я что-то пропустила?


ни одно из этих предложений не работало для меня. Наконец - то я нашел, что еще можно сделать ... --1-->. Например:

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

- бум. Он напечатал все, что я хотел - без усечения или чего-то подобного. И это работает прямо в sqlplus - нет необходимости помещать его в отдельный файл или что-то еще.


в Windows вы можете попробовать следующее:

  • щелкните правой кнопкой мыши в окне sqlplus
  • выберите Свойства ->макет
  • увеличьте ширину буфера экрана до 1000