【问题标题】:Oracle Spool - Missing complere informationOracle Spool - 缺少完整信息
【发布时间】:2016-03-14 09:40:00
【问题描述】:

我正在尝试Spool 我的表元数据中的信息。但是文本文件在第二行结束。它不显示完整的元数据

SPOOL P_TABLES.txt

set linesize 10000
set trimspool on
set heading on

SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_X') FROM DUAL;

SPOOL OFF;

它导出一个文本文件,但不提供完整信息。

> SELECT DBMS_METADATA.GET_DDL('TABLE','TESI_STAMPDUTYLABELSVALUE') FROM DUAL

CREATE TABLE "ESIXUSER"."TESI_STAMPDUTYLABELSVALUE" 
 (  "SVUNIDOCREFID" VAR...
 //Nothing after this in .txt file.

在 Oracle SQL Developer 中,我可以检查完整的 DLL。

我是否在 sql 文件中更改我的 linesize?

【问题讨论】:

    标签: oracle dll metadata spool


    【解决方案1】:

    我不确定这是否有效,但是

    点击这里(http://www.dba-oracle.com/t_1_dbms_metadata.htm“这可能对你有帮助”)

    我认为你缺少这些:

    设置航向 关闭回声 设置页数 999 设置长 90000

    【讨论】:

      【解决方案2】:

      GET_DDL 返回一个CLOB,这可能很难直接打印。 如果您需要打印结果,您可能需要扫描您的CLOB 打印行的东西:

      declare     
        vClob clob; 
      
        PROCEDURE print_clob (
          pClob      IN OUT NOCOPY CLOB
        )
        IS
          kLineTerminator    VARCHAR2(1)   := CHR(10);
          vlgh_file    NUMBER := 0;                                 
          vLineEndPos      INTEGER;
          vROW         VARCHAR2(32767);
          vOffset      NUMBER := 1;
      
        BEGIN
          vlgh_file := DBMS_LOB.GETLENGTH(pClob);
          --
          while (vOffset < vlgh_file) LOOP
            vLineEndPos := DBMS_LOB.INSTR(pClob, kLineTerminator, vOffset);
            if (vLineEndPos = 0) then
              vLineEndPos := vlgh_file +1 ;
            end if;
            vROW        := RTRIM(NVL(DBMS_LOB.SUBSTR(pClob, vLineEndPos - vOffset, vOffset),'--'));
            vOffset     := vLineEndPos;
      
            DBMS_OUTPUT.PUT_LINE(vROW);
      
            vOffset := vOffset + 1;
          END LOOP;
        END print_clob;  
      begin
          select  DBMS_METADATA.GET_DDL('TABLE','TEST_DDL') into vClob from dual;
          --
          print_clob(vClob);
      end;
      /     
      

      【讨论】:

        【解决方案3】:
        SET LONG 1000000000
        SET LINESIZE 10000
        SPOOL ABC.TXT
        SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_X') FROM DUAL;
        SPOOL OFF;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-11
          • 1970-01-01
          • 1970-01-01
          • 2016-08-25
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          相关资源
          最近更新 更多