Предотвратите выход катушки от быть обернутым
Я пытаюсь сгенерировать все 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 ответа:
Как насчет использования 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