【问题标题】:how to get DDL (create query of a table) of a table from SQL Developer如何从 SQL Developer 获取表的 DDL(创建表的查询)
【发布时间】:2022-01-20 06:26:05
【问题描述】:

我在 SQL Developer 中使用 Spool 将输出转换为 CSV 文件。 我听说可以使用 DDL 命令来获取表的创建查询。

我的查询如下

    spool "path/output.csv" 
    @"path/query.sql";
spool of;

sql如下

set sqlformat loader
select * from table;

您能否建议我如何使用 DDL 命令在 .csv 文件中后台处理表的创建查询。

【问题讨论】:

    标签: oracle oracle-sqldeveloper ddl


    【解决方案1】:

    DBMS_METADATA 是 Oracle 的一般答案。但是,如果您使用的是 SQL Developer,就像您在问题中标记的那样,那么您可以简单地使用 DDL 命令。

    什么是 DDL?这是一个客户端命令,您可以在 SQLcl 和 SQL Developer 中运行,为您构建 dbms_metadata.get_ddl() 代码。

    那么让我们:

    • 设置我们的 DDL 选项,我们希望它看起来如何
    • 不包括假脱机文件中的命令
    • 不在我们的假脱机文件中包含“选择的 4 行”
    • 指定我们想要假脱机文件的位置
    • 启动假脱机,设置文件名
    • 求ddl
    • 在 CSV 中查询表格行
    • 关闭阀芯

    代码:

    clear screen
    set ddl storage, segment_attributes off
    set echo off
    set feedback off
    cd c:\users\jdsmith\desktop
    spool regions.sql
    ddl regions
    select /*csv*/ * from regions;
    spool off
    

    【讨论】:

    • 哇@thatjeffsmith 你自己回复了。非常感谢。
    【解决方案2】:

    怎么样

    set sqlformat loader
    spool "path/output.csv" 
    select * from table;
    spool off;
    

    根据您发布的 cmets,您似乎想要假脱机 CREATE TABLE 声明。如果是这样,请使用DBMS_METADATA 包,例如

    SQL> set long 10000
    SQL> set pagesize 0
    SQL>
    SQL> select dbms_metadata.get_ddl('TABLE', 'DEPT', 'SCOTT') create_table from dual;
    
      CREATE TABLE "SCOTT"."DEPT"
       (    "DEPTNO" NUMBER(2,0),
            "DNAME" VARCHAR2(14),
            "LOC" VARCHAR2(13),
             CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO")
      USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "USER_DATA"  ENABLE
       ) SEGMENT CREATION IMMEDIATE
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
     NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "USER_DATA"
    
    
    SQL>
    

    【讨论】:

    • 不@Littlefoot,这给了我 csv 文件中的所有记录。我想要的是在 csv 中将该表的 CREATE 查询作为输出
    • 对不起,我不太明白。作为 OUTPUT.CSV 文件的结果,您究竟想得到什么?
    • 想要创建该表的查询,例如:像在 Microsoft SSMS 中,有一个选项可以将 CREATE 查询作为 SCRIPT TABLE 拉为 >> CREATE TO >> File
    • 啊哈;然后使用 DBMS_METADATA。我编辑了答案并发布了一个例子;您也可以将这些命令包含到 .SQL 文件中。
    • 我添加了一个YouTube视频的链接以供参考,只是为了理解。 youtu.be/8-aUXY2nSVs 切换到时间戳 5:52。谢谢
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2011-10-22
    相关资源
    最近更新 更多