如何从 SQL 开发人员获取 table 的 DDL(创建 table 的查询)

how to get DDL (create query of a table) of a table from SQL Developer

我正在使用 SQL 开发人员中的 Spool 将输出导入 CSV 文件。 我听说可以在哪里使用 DDL 命令来获取 table.

的创建查询

我的查询如下

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

和sql如下

set sqlformat loader
select * from table;

你能否建议我如何使用 DDL 命令在 .csv 文件中假脱机创建 table 的查询。

怎么样

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

根据您发表的评论,您似乎想要假脱机 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>

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

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

所以让我们:

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

代码:

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