it-roy-ru.com

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

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

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

Я пробовал с 

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

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

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

Спасибо

48
Mohamed Saligh

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

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 - желаемая длина в символах) - это полезно, если у вас есть один или два очень больших столбца, и вы просто хотите показать сводку их значений на экране консоли.

51
oliver-clare

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

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

26
Martin Irigaray

Попробуй это

КОЛОННА col_name FORMAT A24

где 24 - это ваша ширина.

12
simplyharsh

В 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
7
M.R

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

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

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

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

2
William Fraser

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

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
April Mc

Ни одно из этих предложений не сработало для меня. Я наконец нашел что-то еще, что я мог сделать - 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;
/

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

0
ArtOfWarfare