昨天使用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可以看到:


    如何导出view我在捣腾下,出结果后再写篇博客,看来以前那个数据库被我折腾的不浅,今后继续折腾,大不了重装下,反正导数据我已经会了,后续的折腾结果我会写博客的,谢谢大家。

Oracle如何导出存储过程相关推荐

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

    昨天使用exp可以导出oracle数据库表,今天说下怎么导出存储过程. 首先看下使用pl/sql怎么导出存储过程. 导出步骤: tools-->Export User Objects...--& ...

  2. Oracle批量导出AWR报告

    Oracle批量导出AWR报告 工作需求:项目中需要把生产库中所有的AWR报告dump出来,然后导入到方便测试的数据库中.在测试库中的AWR报告需要根据dbid和实例名逐个导出,如果遇到很多再加上RA ...

  3. linux服务器oracle数据库导出dmp文件功能演示,备份数据库命令。exp命令显示command not found解决方法,EXP-00028: 无法打开dmp进行写入问题解决

    默认需要切 oracle 用户才可以用,命令su - oracle. 直接用 exp 命令会显示 command not found nctest205:~ # exp ncc_auto_0513/1 ...

  4. Oracle exp导出

    Oracle exp导出 1.本质: 数据的逻辑备份和逻辑恢复 2.特征: 导入导出的数据文件都是dmp结尾的(二进制大文件) 3.格式 EXP KEY = value 或者 KEY=(value1, ...

  5. 如何导出存储过程、函数、包和触发器的定义语句?如何导出表和索引的创建语句?...

    Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程?   麦苗答:方法有多种,可以使用DBMS_MET ...

  6. oracle exp导出表where,oracle EXP导出一张表时使用query参数指定where条件

    oracle exp 导出一个表的部分内容,使用query参数可加上SQL的where条件进行过滤 注意:如果需要使用到日期字符串格式等单引号,需要使用双引号将where条件括起来,而且双引号要用\做 ...

  7. 使用 Athena (Presto) 分析本地 Oracle 数据库导出的数据

    在传统企业客户,无论是前台的交易数据库还是后台的数据仓库,都会选择使用 Oracle,它具备非常广泛的技术资料.社区资源和问题处理案例(各种踩坑的经验):同时它还有广泛的用户基础,很多企业的技术栈都是 ...

  8. mysql存储过程导出_Mysql导出存储过程

    在部署某学院的网站时,发现一个错误: FUNCTION config_get does not exist. 找到代码一看,是conn.prepareCall("{call config_g ...

  9. Oracle job procedure 存储过程定时任务

    Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...

  10. oracle 数据导出

    oracle 数据导出 分类: oracle 2011-10-23 16:22 25人阅读 评论(0) 收藏 举报 方案一:使用SQLPlus的Spool命令.Spool是SQLPlus的命令,不是S ...

最新文章

  1. HDU 1231 最大连续子序列:水dp
  2. 等待指定时间后自动跳转或关闭当前页面
  3. springMVC源码分析
  4. 求指教、。。。关于调用so文件
  5. [Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]
  6. 32 MM配置-采购-采购订单-定义编码范围
  7. 模式学习(1):Decorator装饰者模式
  8. ASP.NET AJAX入门系列
  9. android imageview移动,基于Android实现随手指移动的ImageView
  10. 深度优先算法解决有向有权图的最短路径问题
  11. Python 操作pdf文件-合并操作 (三)
  12. DZ导航栏目参数说明
  13. 技术总监需要做些什么?
  14. 全景图下载,全景管家高清全景图(一键下载建E、720云全景原图)
  15. 双系统安装的linux找不到了,双系统,安装linux时找不到硬盘!?
  16. 使用bat脚本上传文件到Linux服务器
  17. 怎么看待“别人恐惧我贪婪,别人贪婪我恐惧 “这句话
  18. Android 自定义View绘制电池图标
  19. 强化学习笔记(2)深度学习tensorflow2.5以上版本环境安装
  20. 数仓开发5大SQL分析函数

热门文章

  1. 无线局域网和蜂窝移动网络_为什么 iPhone 的数据流量叫做「蜂窝移动网络」?...
  2. 图像处理之对比度增强
  3. win10电脑任务栏右侧小图标消失解决方法
  4. 易语言传奇私服外挂制作视频教程
  5. SAE 搭建微信公众平台
  6. 合肥Android两天十面总结
  7. 建站分享:WordPress自定义网站背景图片
  8. 病毒木马查杀实战第011篇:QQ盗号木马之专杀工具的编写
  9. 圆柱壳matlab,[matlab遗传算法工具箱论文]基于遗传算法和BP神经网络的圆柱壳大...
  10. “未安装任何音频输出设备”解决办法