Предотвратите выход катушки от быть обернутым


Я пытаюсь сгенерировать все DDL для объектов в базе данных, используя команду SPOOL в SQLPLUS

SET trimspool ON
SET wrap off
SET heading off
SET linesize 300
SET echo off
SET pages 999
SET long 90000
Col object_type format a10000
Col object_name format a10000
Col owner format a10000

spool export.out

SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner)
FROM all_OBJECTS 
WHERE OWNER = 'DMALM' 
and object_type not like '%PARTITION'
and object_type not like '%BODY'
and object_type not like '%LOB';

spool off
quit

Но выходной файл, который я получаю, вырезан в col #80. Как предотвратить обертывание выходного файла?

3 4

3 ответа:

Как насчет использования word_wrapped?

SET trimspool ON
SET heading off
SET linesize 300
SET echo off
SET pages 999
SET long 90000
set termout off
column txt format a121 word_wrapped
Col object_type format a10000
Col object_name format a10000
Col owner format a10000
spool export.out

SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner)txt
FROM all_OBJECTS 
WHERE OWNER = 'DMALM' 
and object_type not like '%PARTITION'
and object_type not like '%BODY'
and object_type not like '%LOB';

spool off
quit

Вам также нужно сделать:

SET longchunksize 90000

Как говорится в документации :

Ширина столбцов типа данных по умолчанию равна ширине столбца в базе данных. Ширина столбца a LONG, BLOB, BFILE, CLOB, NCLOB или XMLType по умолчанию принимает значение SET LONGCHUNKSIZE или SET LONG, в зависимости от того, что меньше.

Вы уже устанавливаете LONG, но LONGCHUNKSIZE по-прежнему имеет значение по умолчанию 80, поэтому вам нужно увеличить его, чтобы соответствовать. Вы можете видеть все ваши текущие настройки с show all.

При этом сохраняются разрывы строк и отступы , применяемые по умолчанию.

Звучит так, как будто вы хотите попробовать:

set longchunksize 100

Или эквивалент. Поэкспериментируйте с цифрой, может, это поможет.

Источник Oracle Docs