Как увеличить длину вывода столбца sqlplus? - PullRequest
52 голосов
/ 12 сентября 2011

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

Как увеличить значение столбца?

Я пытался использовать

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

Но,все еще получаю тот же результат.

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

Спасибо

Ответы [ 9 ]

55 голосов
/ 23 августа 2012

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

SET LIN[ESIZE] 200

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

РЕДАКТИРОВАТЬ: для ясности допустимые команды являются SET LIN 200 или SET LINESIZE 200.

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

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

27 голосов
/ 03 сентября 2013

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

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 символов.

13 голосов
/ 12 сентября 2011

Попробуйте это

КОЛОНКА col_name FORMAT A24

, где 24 - ваша ширина.

7 голосов
/ 03 августа 2015

В 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
4 голосов
/ 24 января 2013

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

set linesize 15000;
spool myoutput.txt;
SELECT 
...
spool off;
2 голосов
/ 12 апреля 2013

На самом деле, даже это не сработало для меня. Когда я выполнил "выберите 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;

Конечно, казалось, что должен быть более легкий путь, но я не мог его найти.

1 голос
/ 06 марта 2015

Что я использую:

set long 50000
set linesize 130

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

Или я что-то упустил?

0 голосов
/ 20 января 2018

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

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 - нет необходимости помещать его в отдельный файл или что-то еще.

0 голосов
/ 07 февраля 2015

В Windows вы можете попробовать это:

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