oracle导出function,procedure
2017-03-07 15:16
323 查看
Oracle如何导出存储过程
昨天使用exp可以导出oracle数据库表,今天说下怎么导出存储过程。
首先看下使用pl/sql怎么导出存储过程。
导出步骤:
使用上述步骤可以导出表,序列,存储过程,函数,触发器,Type,包等,导出结果为:
导出后,怎么使用pl/sql导入呢?步骤如下:
不使用pl/sql怎么导出存储过程呢?
参考了文章:http://bijian1013.iteye.com/blog/1830406
一般用户导出存储过程脚本为:
Sys用户导出存储过程脚本为:
导出发现三次导出的文件大小不一致,第二次普通用户spool导出的文件最大,怀疑是select时候没带条件导出来其他的Type,Trigger之类的数据,下面开始测试看下有那些类型:
系统Sys用户:
结果为:
普通用户TMD:
结果为:
可见类型有PROCEDURE,PACKAGE,PACKAGE BODY,TYPE BODY,TRIGGER,FUNCTION,TYPE,第二次导出没带Type参数导致导出结果不准确:
只导出存储过程正确的方法为:
使用pl/sql导出的数据(如存储过程)是带用户名的,上面写的使用spool是不带用户名的。
导出结果和Sys用户导出结果比对,结果为:
结果很正确,想要导什么数据,把Type修改下就OK了,表除外。举个例子
普通用户导出Type,和Type Body
结果为:
另一种导出存储过程的脚本,参考了文章:
http://stackoverflow.com/questions/710290/oracle-exporting-procedures-packages-to-a-file
和上面那个没什么区别。
眼尖的朋友可能看出来了,如果我想导出视图怎么办呢,上面的类型中可是没有VIEW这一类的。
使用pl/sql导出是一种方法:
没有像上面的从数据库中select出来呢?
网上说可以使用:
可是我的直接报错了,如下:
网上的解决方法是:
可是我的直接报错:
电脑上rdbms下面根本没有xml文件夹:
自己也找了很久的资料,一直没解决,可能是数据库版本太低所致,可能性较大的是我的数据库出现问题了。
晚上重装了数据库,果然是数据库有问题,现在使用
已经可以正确的得到结果了,如下:
打开CLOB可以看到:
昨天使用exp可以导出oracle数据库表,今天说下怎么导出存储过程。
首先看下使用pl/sql怎么导出存储过程。
导出步骤:
tools-->Export User Objects...-->选择存储过程(Procedure,Function,Trigger,Type,Type Body,Package)等-->在Output File选择导出位置-->Export
使用上述步骤可以导出表,序列,存储过程,函数,触发器,Type,包等,导出结果为:
导出后,怎么使用pl/sql导入呢?步骤如下:
tools-->Import Tables-->选择标签页SQL Inserts-->在Import File中选择Sql文件位置-->Import
不使用pl/sql怎么导出存储过程呢?
参考了文章:http://bijian1013.iteye.com/blog/1830406
一般用户导出存储过程脚本为:
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
结果为:
普通用户TMD:
select distinct type from user_source
结果为:
可见类型有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用户导出结果比对,结果为:
结果很正确,想要导什么数据,把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;
结果为:
另一种导出存储过程的脚本,参考了文章:
http://stackoverflow.com/questions/710290/oracle-exporting-procedures-packages-to-a-file
SET pages 0 spool f:/saveFile/tmp/c/my_procedure_2.sql SELECT CASE line WHEN 1 THEN 'CREATE OR REPLACE ' || TYPE || ' ' || NAME || CHR(10) || text ELSE text END FROM user_source WHERE TYPE ='PROCEDURE' ORDER BY name, line; spool OFF exit
和上面那个没什么区别。
眼尖的朋友可能看出来了,如果我想导出视图怎么办呢,上面的类型中可是没有VIEW这一类的。
使用pl/sql导出是一种方法:
没有像上面的从数据库中select出来呢?
网上说可以使用:
select dbms_metadata.get_ddl('VIEW','VW_TB_A','TMD') from dual;
可是我的直接报错了,如下:
网上的解决方法是:
以sysdba用户登陆以后执行以下语句: exec dbms_metadata_util.load_stylesheets;
可是我的直接报错:
电脑上rdbms下面根本没有xml文件夹:
自己也找了很久的资料,一直没解决,可能是数据库版本太低所致,可能性较大的是我的数据库出现问题了。
晚上重装了数据库,果然是数据库有问题,现在使用
select dbms_metadata.get_ddl('VIEW','VW_TB_A','TMD') from dual;
已经可以正确的得到结果了,如下:
打开CLOB可以看到:
相关文章推荐
- oracle自动导出Function、procedure等存储过程;
- oracle怎么导出function和procedure,即函数和存储过程?
- oracle自动导出Function、procedure等存储过程;
- ORACLE相关语法——子程序和程序包(package,function,procedure)
- oracle 存储过程 PROCEDURE和 FUNCTION区别:
- oracle 游标,函数 function , 存储过程 PROCEDURE , 触发器 Trigger
- oracle中的procedure,function,trigger
- 黑马程序员-浅谈个人理解,oracle procedure-存储过程、Function-函数、 package-包
- Oracle基础学习三:过程PROCEDURE 和函数FUNCTION 的创建及调用
- oracle中 procedure和function有何本质区别
- Oracle 过程(Procedure)、函数(Function)、包(Package)、触发器(Trigger)
- Oracle 编译、调用或调试Procedure、Function或Package时卡死问题
- 导出Oracle数据库用户Procedure和Function为文本文件的小工具
- Oracle store procedure and Function返回结果集。
- ORACLE相关语法——子程序和程序包(package,function,procedure)
- ORACLE相关语法--子程序和程序包(package,function,procedure)
- How to create Function/Procedure in Oracle?
- Oracle基础学习三:过程PROCEDURE 和函数FUNCTION 的创建及调用
- oracle/sql server procedure 导入/导出
- ORACLE相关语法——子程序和程序包(package,function,procedure