oracle将存储过程导出,Oracle如何导出存储过程

昨天使用exp可以导出oracle数据库表,今天说下怎么导出存储过程。

首先看下使用pl/sql怎么导出存储过程。

导出步骤:

tools-->Export User Objects...-->选择存储过程(Procedure,Function,Trigger,Type,Type Body,Package)等-->在Output File选择导出位置-->Export

A130333339-88315.jpg_small.jpg

A130335917-88316.jpg_small.jpg

使用上述步骤可以导出表,序列,存储过程,函数,触发器,Type,包等,导出结果为:

A130338339-88317.jpg_small.jpg

导出后,怎么使用pl/sql导入呢?步骤如下:

tools-->Import Tables-->选择标签页SQL Inserts-->在Import File中选择Sql文件位置-->Import

A130340604-88318.jpg_small.jpg

A130342870-88319.jpg_small.jpg

不使用pl/sql怎么导出存储过程呢?

一般用户导出存储过程脚本为:

SET echo off;

SET heading off;

SET feedback off;

spool f:/saveFile/tmp/my_proc.sql;

select text from user_source;

spool off;

Sys用户导出存储过程脚本为:

SET echo off;

SET heading off;

SET feedback off;

spool f:/saveFile/tmp/tmd_proc.sql;

select text from dba_source where owner= 'TMD' and type = 'PROCEDURE';

spool off;

导出发现三次导出的文件大小不一致,第二次普通用户spool导出的文件最大,怀疑是select时候没带条件导出来其他的Type,Trigger之类的数据,下面开始测试看下有那些类型:

系统Sys用户:

select distinct type from dba_source

结果为:

A130345198-88320.jpg_small.jpg

普通用户TMD:

select distinct type from user_source

结果为:

A130347401-88321.jpg

可见类型有PROCEDURE,PACKAGE,PACKAGE BODY,TYPE BODY,TRIGGER,FUNCTION,TYPE,第二次导出没带Type参数导致导出结果不准确:

只导出存储过程正确的方法为:

SET echo off;

SET heading off;

SET feedback off;

spool f:/saveFile/tmp/my_proc2.sql;

select text from user_source where type = 'PROCEDURE';

spool off;

使用pl/sql导出的数据(如存储过程)是带用户名的,上面写的使用spool是不带用户名的。

导出结果和Sys用户导出结果比对,结果为:

A130349839-88322.jpg_small.jpg

结果很正确,想要导什么数据,把Type修改下就OK了,表除外。举个例子

普通用户导出Type,和Type Body

SET echo off;

SET heading off;

SET feedback off;

spool f:/saveFile/tmp/my_type.sql;

select text from user_source where type in('TYPE BODY','TYPE');

spool off;

结果为:

A130352385-88323.jpg_small.jpg

眼尖的朋友可能看出来了,如果我想导出视图怎么办呢,上面的类型中可是没有VIEW这一类的。

使用pl/sql导出是一种方法:

A130354776-88324.jpg_small.jpg

没有像上面的从数据库中select出来呢?

网上说可以使用:

select dbms_metadata.get_ddl('VIEW','VW_TB_A','TMD') from dual;

可是我的直接报错了,如下:

A130357104-88325.jpg_small.jpg

网上的解决方法是:

以sysdba用户登陆以后执行以下语句:

exec dbms_metadata_util.load_stylesheets;

可是我的直接报错:

A130359635-88326.jpg_small.jpg

电脑上rdbms下面根本没有xml文件夹:

A130401839-88327.jpg_small.jpg

自己也找了很久的资料,一直没解决,可能是数据库版本太低所致。

全文完。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值