如何通过SQL Developer工具(SQLPLUS命令行界面)获取Oracle的表格,存储过程的脚本?
这对我有用:
PL SQL Developer - >工具 - >导出用户对象
选中复选框:包含权限和包含存储
选择您的文件名 . 打出口 .
您可以稍后使用生成的导出文件在另一个模式中创建表 .
SQL Developer -> Tools -> Database Export...
如果要查看对象的DDL,可以使用
select dbms_metadata.get_ddl('OBJECT_TYPE','OBJECT_NAME','OBJECT_OWNER') from dual /
例如,这将为您提供 emp 表的DDL脚本 .
emp
select dbms_metadata.get_ddl('TABLE','EMP','HR') from dual /
您可能需要将 long 类型格式设置为大数字 . 对于包,您需要访问 dba_source, user_source, all_source 表 . 您可以查询对象名称和类型以查看存储的代码 .
long
dba_source, user_source, all_source
在SQL Developer中,右键单击要为其生成脚本的对象 . 即表名
选择快速DLL>保存到文件
然后,这将把create语句写入外部sql文件 .
注意,您还可以同时突出显示多个对象,因此您可以生成一个包含数据库中所有表的create语句的脚本 .
在Oracle中,包含有关所有数据库对象(包括表和存储过程)的信息的位置称为数据字典 . 它是一组视图,使您可以访问定义数据库的元数据 . 您可以在数据字典视图中查询所需数据库对象的列表,然后使用 dbms_metadata 包中的可用函数来获取每个对象的DDL . 另一种方法是调查 dbms_metadata 中的支持,以便为对象集合导出DDL .
dbms_metadata
对于一些指针,例如,要获取表的列表,您可以使用以下数据字典视图
user_tables 包含用户拥有的所有表
user_tables
all_tables 包含用户可以访问的所有表
all_tables
等等......
使用dbms_metadata包,如here所述
step 1 . select * from <tablename>;
select * from <tablename>;
step 2 . 只需右键单击您的输出(t.e数据)然后转到最后一个选项导出它将给你一些扩展然后单击您所需的扩展然后应用你将获得包括数据的新文件 .
基本答案似乎是“使用dbms_metadata包” . 轴心问题是:
但是如果我想一次为所有表生成一个脚本呢?
答案可能是询问所有表的名称和所有者的系统目录:
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_metadata.get_ddl ,查询将是:
dbms_metadata.get_ddl
SELECT dbms_metadata.get_ddl('TABLE', s.tabname, s.owner) FROM "informix".systables AS s WHERE tabid >= 100 AND tabtype = 'T';
在Informix中,为系统目录保留小于100的制表符,并且通过要求正确的“tabtype”排除非表(视图,同义词,序列和一些其他深奥的东西) .
我不知道DMBS_METADATA,但是你的答案促使我创建了一个utility to script all objects owned by an Oracle user .
Oracle SQL Developer>查看> DBA>选择您的连接>展开>安全性>用户>右键单击您的用户>创建类似>填写字段>复制SQL脚本>关闭
如果您的用户具有对象权限,请同时执行此操作
Oracle SQL Developer>查看> DBA>选择您的连接>展开>安全性>用户>双击您的用户>对象权限>选择所有数据>右键单击>导出>导出为文本文件
编辑该文本文件以向用户授予对象权限 .
10 回答
这对我有用:
PL SQL Developer - >工具 - >导出用户对象
选中复选框:包含权限和包含存储
选择您的文件名 . 打出口 .
您可以稍后使用生成的导出文件在另一个模式中创建表 .
SQL Developer -> Tools -> Database Export...
如果要查看对象的DDL,可以使用
例如,这将为您提供
emp
表的DDL脚本 .您可能需要将
long
类型格式设置为大数字 . 对于包,您需要访问dba_source, user_source, all_source
表 . 您可以查询对象名称和类型以查看存储的代码 .这对我有用:
在SQL Developer中,右键单击要为其生成脚本的对象 . 即表名
选择快速DLL>保存到文件
然后,这将把create语句写入外部sql文件 .
注意,您还可以同时突出显示多个对象,因此您可以生成一个包含数据库中所有表的create语句的脚本 .
在Oracle中,包含有关所有数据库对象(包括表和存储过程)的信息的位置称为数据字典 . 它是一组视图,使您可以访问定义数据库的元数据 . 您可以在数据字典视图中查询所需数据库对象的列表,然后使用
dbms_metadata
包中的可用函数来获取每个对象的DDL . 另一种方法是调查dbms_metadata
中的支持,以便为对象集合导出DDL .对于一些指针,例如,要获取表的列表,您可以使用以下数据字典视图
user_tables
包含用户拥有的所有表all_tables
包含用户可以访问的所有表等等......
使用dbms_metadata包,如here所述
step 1 .
select * from <tablename>;
step 2 . 只需右键单击您的输出(t.e数据)然后转到最后一个选项导出它将给你一些扩展然后单击您所需的扩展然后应用你将获得包括数据的新文件 .
基本答案似乎是“使用dbms_metadata包” . 轴心问题是:
答案可能是询问所有表的名称和所有者的系统目录:
我不熟悉Oracle以了解系统目录 . 在Informix中,我知道,假设有一个过程
dbms_metadata.get_ddl
,查询将是:在Informix中,为系统目录保留小于100的制表符,并且通过要求正确的“tabtype”排除非表(视图,同义词,序列和一些其他深奥的东西) .
我不知道DMBS_METADATA,但是你的答案促使我创建了一个utility to script all objects owned by an Oracle user .
Oracle SQL Developer>查看> DBA>选择您的连接>展开>安全性>用户>右键单击您的用户>创建类似>填写字段>复制SQL脚本>关闭
如果您的用户具有对象权限,请同时执行此操作
Oracle SQL Developer>查看> DBA>选择您的连接>展开>安全性>用户>双击您的用户>对象权限>选择所有数据>右键单击>导出>导出为文本文件
编辑该文本文件以向用户授予对象权限 .