`
53873039oycg
  • 浏览: 837155 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Oracle如何导出存储过程

阅读更多

     昨天使用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我在捣腾下,出结果后再写篇博客,看来以前那个数据库被我折腾的不浅,今后继续折腾,大不了重装下,反正导数据我已经会了,后续的折腾结果我会写博客的,谢谢大家。

 

  • 大小: 47.6 KB
  • 大小: 117.4 KB
  • 大小: 265.7 KB
  • 大小: 53.8 KB
  • 大小: 95.4 KB
  • 大小: 42.1 KB
  • 大小: 40.4 KB
  • 大小: 309.6 KB
  • 大小: 125.5 KB
  • 大小: 207.5 KB
  • 大小: 34 KB
  • 大小: 64.8 KB
  • 大小: 73.4 KB
  • 大小: 34 KB
  • 大小: 20.1 KB
1
2
分享到:
评论

相关推荐

    oracle 存储过程导出excel

    oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel

    oracle导出文本文件的存储过程

    oracle导出文本文件的存储过程。 需要在oracle安装的机器上导出,效率非常高。

    Oracle导出Clob,Blob工具版本2

    "Oracle导出Clob,Blob工具版本2" 是一个专为解决这个问题而设计的应用程序,它改进了对CLOB(Character Large Object)和BLOB(Binary Large Object)数据类型的导出效率,特别是修复了上一版本中导出时间过长的问题...

    oracle定时存储过程导出用户表或者指定表及数据导出CSV文件

    定时导出oracle指定用户下指定表的所有数据及格式生成CSV文件,通过存储过程; 1.使用特定用户或者system登陆到oracle执行"存储过程.txt"里面的脚本生成对应的存储过程; (说明:存储过程.txt脚本说明,查询指定用户下...

    oracle 导出数据字典的小工具

    2. **选择导出内容**:工具通常会提供选项,让用户选择要导出的数据字典部分,比如表、索引、触发器、存储过程等。 3. **格式化设置**:用户可能还可以定制导出的格式,如字体、颜色、表格样式等,以满足个人喜好或...

    oracle 导出数据库中部分表

    ### Oracle导出工具:expdp Oracle提供了两种主要的导出工具:`exp`和`expdp`。其中,`exp`是较早版本的工具,而`expdp`则是基于Direct Path Load技术的现代工具,提供更高的性能和更多的功能选项。在本例中,我们...

    Oracle导出图片源代码

    "Oracle导出图片源代码"是针对这个需求编写的一段程序,它可以有效地从Oracle数据库中导出存储在BLOB字段中的图片。 首先,我们要理解Oracle数据库中如何存储和访问图片。BLOB字段用于存储大量的二进制数据,包括...

    Oracle导出INSERT语句V1.1

    总的来说,“Oracle导出INSERT语句V1.1”是数据库管理员和开发人员的强大助手,它可以简化数据迁移和备份过程,提高工作效率。了解如何有效利用这个工具,将有助于我们在Oracle数据库管理中更高效地完成任务。

    解决Oracle导出dmp文件空表导不出问题.docx

    ### 解决Oracle导出DMP文件空表导不出问题 #### 背景与问题描述 在使用Oracle数据库的过程中,可能会遇到一个常见的问题:当尝试使用工具如PL/SQL Developer导出包含空表的DMP文件时,这些空表无法被正确地导出。...

    批量导出ORACLE数据库BLOB字段生成图片

    Oracle数据库在存储大对象(BLOB)数据时,提供了高效且灵活的方式,使得二进制数据如图片、文档等能够安全地保存在数据库中。批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将...

    oracle下导出某用户所有表的方法

    可以使用 PL/SQL 工具来导出用户对象,例如视图、存储过程、函数等。首先,需要登录到 Oracle 数据库,然后在 PL/SQL 工具中选择“工具”菜单下的“导出用户对象”,然后选择要导出的对象类型和文件名。 导出表的...

    oracle存储过程导出表数据为XLS.WORD.TXT文件

    1:数据库dba权限 2:设置路径 3:运行存储过程即可 oracle 存储过程导出 XLS WORD TXT

    Oracle导出报错处理,备份数据库的bat

    当遇到Oracle导出过程中出现错误,特别是涉及到空表导出的问题时,需要采取特定的策略来优化和解决。本篇文章将详细探讨Oracle导出报错处理,以及如何利用bat批处理文件进行数据库备份和文件清理。 首先,Oracle...

    PLSQL中存储过程的建立,导出,导入,使用

    #### 三、导出存储过程 1. **选择导出工具**:点击工具栏上的“工具”菜单,选择“导出用户对象”。 2. **选择存储过程**:在导出对话框中,找到并选中需要导出的存储过程。 3. **设置导出路径**:指定导出文件的...

    oracle数据库导出表结构到WORD文档

    在"压缩包子文件的文件名称列表"中提到的"oracle表结构导出器"可能是一个专用的工具,它简化了上述过程,能够直接将Oracle表结构导出为Word格式,无需手动操作。这种工具通常会包含预设的模板和格式,使得输出的文档...

    oracle导出导入定时

    2. Oracle的DBMS_SCHEDULER:在数据库级别设置定时任务,直接调用PL/SQL存储过程执行导出导入。 五、最佳实践 - 定期备份:根据业务需求,设定合理的备份频率,如每天、每周等。 - 安全存储:导出文件应存储在安全...

    批处理的oracle导出备份写法

    本篇主要介绍如何利用批处理(bat)脚本来实现Oracle数据库的自动导出备份。 Oracle数据库的导出备份通常使用的是Oracle的数据泵工具(expdp),它允许我们创建数据的逻辑备份,这些备份可以是整个数据库、特定用户...

Global site tag (gtag.js) - Google Analytics