【发布时间】:2014-09-28 08:28:07
【问题描述】:
我正在尝试使用 SQLPLUS 中的 SPOOL 命令为数据库中的对象生成所有 DDL:
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
但是我得到的输出文件在第 80 列被剪切。 如何防止输出文件被包装?
【问题讨论】:
-
您确定文件中的数据是包装的,而不是您的文本编辑器包装的吗?
-
@AlexPoole 我正在使用记事本++打开文件并关闭了换行选项..
-
您将 linesize 保持为 300 字节,但将 object_type、object_name、owner 的长度保持为一万(即 a10000)。将它们设置为 a30,因为它们都不能比这更大......另外,您需要使用 DBMS_METADATA.SET_TRANSFORM_PARAM 来设置各种参数,以便您的输出符合要求的格式。
-
那些
col设置无关紧要,因为这些列不包含在结果集中。