как увеличить выходную длину столбца 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 символов.
в 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