微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

因此,我在 Oracle sql Developer 中创建了一个数据库,并使用 Notepad ++ 手动编写了所有表定义,然后只做了一个批量创建表语句。 愚蠢的我忘了保存这个文件,所以现在我拥有 sql 开发人员的所有定义,但本地没有。

我对设计进行了一些重大更改,但仍有一些我仍然可以使用的定义。

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

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

解决方法

工具、数据库导出

取消选中“数据”

选择您的输出选项,您需要一个文件用于所有内容或每个对象一个文件。

enter image description here

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

,

当然,您可以 - 使用 DBMS_METADATA 包及其 GET_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,"HIREDATE" DATE,"SAL" NUMBER(7,2),"COMM" NUMBER(7,"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 中运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。