Oracle-如何从sql developer生成脚本

Oracle-如何从sql developer生成脚本,oracle,Oracle,如何通过SQL Developer工具(SQLPLUS命令行界面)为Oracle的表、存储过程的架构获取脚本?使用dbms_元数据包,如前所述如果要查看对象的DDL,可以使用 select dbms_metadata.get_ddl('OBJECT_TYPE','OBJECT_NAME','OBJECT_OWNER') from dual / 例如,这将为您提供emp表的DDL脚本 select dbms_metadata.get_ddl('TABLE','EMP','HR') f

如何通过SQL Developer工具(SQLPLUS命令行界面)为Oracle的表、存储过程的架构获取脚本?

使用dbms_元数据包,如前所述

如果要查看对象的DDL,可以使用

select dbms_metadata.get_ddl('OBJECT_TYPE','OBJECT_NAME','OBJECT_OWNER') 
  from dual
/
例如,这将为您提供
emp
表的DDL脚本

select dbms_metadata.get_ddl('TABLE','EMP','HR') 
  from dual
/

您可能需要将
long
类型格式设置为大数字。对于包,您需要访问
dba\u源、用户\u源、所有\u源
表。您可以查询对象名称和类型以查看存储的代码。

基本答案似乎是“使用dbms\u元数据包”。另外一个问题是:

但是,如果我想一次为所有表生成一个脚本呢

答案大概是查询系统目录中所有表的名称和所有者:

SELECT dbms_metadata.get_ddl('TABLE', s.tabname, s.tabowner)
  FROM system_catalog_describing_tables AS s
 WHERE ...any conditions that are needed...
我对Oracle不够熟悉,无法了解系统目录。在我所知道的Informix中,假设有一个过程
dbms\u metadata.get\u ddl
,查询将是:

SELECT dbms_metadata.get_ddl('TABLE', s.tabname, s.owner)
  FROM "informix".systables AS s
 WHERE tabid >= 100 AND tabtype = 'T';

在Informix中,小于100的tabid保留给系统目录,而非表(视图、同义词、序列和其他一些深奥的东西)则通过要求正确的“tabtype”而被排除在外。

在Oracle中,包含所有数据库对象(包括表和存储过程)信息的位置称为数据字典。它是一组视图,为您提供了对定义数据库的元数据的访问。您可以在数据字典视图中查询所需数据库对象的列表,然后使用
dbms\u metadata
包中提供的函数获取每个对象的DDL。另一种方法是研究
dbms\u元数据中对导出对象集合的DDL的支持

例如,对于一些指针,要获取表列表,可以使用以下数据字典视图

  • user\u表
    包含用户拥有的所有表
  • all_tables
    包含用户可以访问的所有表
  • 等等

我不知道DMBS_元数据,但您的回答促使我创建了一个。

Oracle SQL Developer>视图>DBA>选择您的连接>扩展>安全性>用户>右键单击您的用户>创建类>填写字段>复制SQL脚本>关闭

如果您的用户具有对象权限,也可以执行此操作


Oracle SQL Developer>视图>DBA>选择您的连接>扩展>安全性>用户>双击您的用户>对象权限>选择所有数据>右键单击>导出>导出为文本文件

编辑该文本文件以向用户授予对象权限。

这对我很有用:

  • 在SQL Developer中,右键单击要为其生成脚本的对象。i、 e.表名
  • 选择快速DLL>保存到文件
  • 然后将create语句写入外部sql文件
注意,您还可以同时高亮显示多个对象,以便生成一个脚本,其中包含数据库中所有表的create语句。

这对我很有用:

PL SQL开发人员->工具->导出用户对象

选中复选框:包括特权和包括存储

选择您的文件名。打击出口


以后可以使用生成的导出文件在另一个架构中创建表。

步骤1<代码>从中选择*


步骤2。只需右键单击您的输出(t.e数据),然后转到最后一个选项导出它将为您提供一些扩展名,然后单击您所需的扩展名,然后应用,您将获得包含数据的新文件

长期以来,这里提到的是这样的事情。“set long 200000 pages 0 lines 131”SQL Developer和PL/SQL Developer是不同的程序。如果您有一个很长的java sp列表,而您通常不想以这种方式编写脚本,这是一个噩梦。您对“sp”是什么意思?我不适用。需要DDTek.Oracle程序集(datadirect.com的数据提供程序)。回答得好。一个小小的澄清。至少在SQL Developer的当前版本中,如果您选择多个存储过程并执行“快速DDL”操作,那么您不会获得SP的主体。要实现这一点,您必须打开多个存储过程,以便可以看到树中引用主体的部分,并选择其中一些,然后执行“快速DDL”。谢谢你的回答——这正是我想要的。