我可以在Oracle SQL Developer中导出数据库中的所有表定义吗

我可以在Oracle SQL Developer中导出数据库中的所有表定义吗,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,因此,我在OracleSQLDeveloper中创建了一个数据库,并使用Notepad++手工编写了所有表定义,然后执行了一个BulkCreateTables语句。 愚蠢的我忘了保存这个文件,所以现在我有了所有关于SQLDeveloper的定义,但是本地没有 我已经对设计做了一些重大修改,但是仍然可以使用一些定义 有没有办法将数据库中的所有表导出到文件中?我知道我可以单独获取定义,但是时间限制将是巨大的。这样,我就不必再手动编写了。我进行的任何搜索都只是给出如何选择数据库中所有表的答案,而不是如

因此,我在OracleSQLDeveloper中创建了一个数据库,并使用Notepad++手工编写了所有表定义,然后执行了一个BulkCreateTables语句。 愚蠢的我忘了保存这个文件,所以现在我有了所有关于SQLDeveloper的定义,但是本地没有

我已经对设计做了一些重大修改,但是仍然可以使用一些定义

有没有办法将数据库中的所有表导出到文件中?我知道我可以单独获取定义,但是时间限制将是巨大的。这样,我就不必再手动编写了。我进行的任何搜索都只是给出如何选择数据库中所有表的答案,而不是如何导出表定义

请注意,我查看了Notepad++的临时数据,但是该文件不再存在。

工具,数据库导出

取消选中“数据”

选择您的输出选项,您希望所有内容都有一个文件,或者每个对象都有一个文件

然后选择您的模式和对象-如果选择“nothing”,默认情况下它将转储整个模式。

当然,您可以-使用DBMS\u元数据包及其GET\u DDL函数

例如,我在SCOTT的模式中仅针对两个表执行此操作,它如下所示:

SQL> set pagesize 0
SQL> set linesize 200
SQL> set long 20000
SQL> set longchunksize 20000
SQL> set feedback off
SQL> set verify off
SQL> set trimspool on
SQL>
SQL> select dbms_metadata.get_ddl ('TABLE', table_name, 'SCOTT')
  2  from user_tables
  3  where table_name in ('EMP', 'DEPT');

  CREATE TABLE "SCOTT"."DEPT"
   (    "DEPTNO" NUMBER(2,0),
        "DNAME" VARCHAR2(14),
        "LOC" VARCHAR2(13)
   ) 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 "USERS"


  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0) NOT NULL ENABLE,
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0)
   ) 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 "USERS"

SQL>

您在开始时注意到一些SET命令—我在SQL*Plus中运行过,但在SQL Developer中也可以使用。

您是否尝试过工具->数据库导出?@JohnSortley24:数据库中对象的定义在数据库本身中。SQLDeveloper只是数据库的一个接口。您可以从其他接口获取相同的信息,例如SQL*Plus、Toad、PL/SQL Developer、您自己编写的C或Java或Visual Basic应用程序等。在您将语句从Notepad++复制到SQL Developer并执行之后,当您关闭会话或SQL Developer时,系统会询问您是否要保存更改。如果您说是,您可能在系统的某个地方有一个*.sql文件。如果您尝试保存其他文件,它可能会尝试保存在同一目录中,然后您可以四处查看。你也可以在那里找到你的陈述。但是,如果您对表的最终版本感到满意,那么数据库导出可能是最好的方法。SQL开发者已经发明了轮子,不需要再做了。gui运行您的代码的变体