189 8069 5689

oracle如何导出存过,oracle 数据导出

Oracle批量导出存储过程(保持每个存储过程独立)

略微复杂,需要存储过程实现。

成都创新互联公司长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为青羊企业提供专业的成都网站制作、成都做网站、外贸营销网站建设青羊网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

1、创建输出路径,比如你要在d盘test目录下输出,你就先在d盘根目录下建立一个test的目录。

2、sqlplus下以sysdba登录,执行以下语句

create or replace directory TMP as 'd:\test';

grant read,write on directory TMP to scott; --比如我用的scott用户

alter system set utl_file_dir='d:\test' scope=spfile;

3、以上步骤执行完,需要重启数据库。

4、创建一个存储过程,代码如下(基本是不用改动,原封复制即可):

CREATE OR REPLACE PROCEDURE SP_OUTPUT_PROCEDURE is

file_handle     utl_file.file_type;

Write_content   VARCHAR2(1024);

Write_file_name VARCHAR2(50);

v_name          varchar2(50);

v_text          varchar2(2000);

cursor cur_procedure_name is

select distinct name from user_source where type = 'PROCEDURE';

cursor cur_sp_out is

select t.text

from (select 0 line, 'CREATE OR REPLACE ' text

from dual

union

select line, text

from user_source

where type = 'PROCEDURE'

and name = v_name) t

order by line;

begin

open cur_procedure_name;

loop

fetch cur_procedure_name

into v_name;

exit when cur_procedure_name%notfound;

write_file_name := v_name || '.txt';

open cur_sp_out;

loop

fetch cur_sp_out

into v_text;

exit when cur_sp_out%notfound;

file_handle   := utl_file.fopen('TMP', write_file_name, 'a');

write_content := v_text;

--write file

IF utl_file.is_open(file_handle) THEN

utl_file.put_line(file_handle, write_content);

END IF;

--close file

utl_file.fclose(file_handle);

end loop;

close cur_sp_out;

end loop;

close cur_procedure_name;

end;

5、创建完毕执行存储过程,这个就不赘述了,执行完毕后,你会发现d盘test目录下的文件名就是以存储过程名命名的txt文件,如图:

6、里边内容(就是存储过程创建时的代码,可能排版看着难看点,但是不影响使用):

oracle sql developer如何导出数据

打开oracle sql developer工具,连接上数据库服务,然后打开表列表,选择需要导出的表,然后右击选择导出

请点击输入图片描述

在导出向导页面,如图可以看到,是否需要导出DLL,是否美化显示等选项,可以根据需要进行勾选。最下面选择编码和导出的文件目录

请点击输入图片描述

这一步,需要选择导出的列字段,可以选择其中部分字段,默认是全部列勾选的,如果不需要修改可以直接点击下一步

请点击输入图片描述

这一步需要指定过滤的where条件,如图所示,在where字句中输入条件,输入完条件之后可以点击刷新按钮查看过滤效果

请点击输入图片描述

到这一步是导出概要,可以查看导出有关的信息等,没有问题的话,可以直接点击完成,即可开始导出数据了。

请点击输入图片描述

如果表里的数据量比较大,在导出的时候需要等待一段时间,可以选择后台运行,这样可以同时做其它的操作。导出程序在后台导出,完成之后会有提醒。

请点击输入图片描述

导出完成之后,打开刚刚设置的导出文件目录,查看导出的文件和数据是否正确。

请点击输入图片描述

如何导出ORACLE指定存储过程

1、要想连接到一个数据库,先得配置一个tnsnames.ora文件。路径位于 【XX】/NETWORK/ADMIN/tnsnames.ora。【XX】视具体情况而定。

截图中红框标记的地方需要改成你需要连接的数据库的信息。

2、测试数据库是否能连通。

运行CMD,命令行执行:sqlplus 用户名/密码@数据库。

3、编写导出存储过程的脚本,保存为E:\export.sql。大概如下(标红框的地方替换成要保存脚本的路径和需要导出的存储过程列表):

SET echo off ;

SET heading   off ;

SET feedback   off ;

SPOOL 'C:/EXP/DDL/PRC_JG_JGTZ.SQL' replace

SELECT CASE

   WHEN LINE = 1 THEN

    'CREATE OR REPLACE ' || TEXT

   WHEN LINE = MAX_LINE THEN

    TEXT || CHR(10 ) || '/'

   ELSE

    TEXT

 END

FROM USER_SOURCE A

LEFT JOIN (SELECT A.NAME,A.TYPE, MAX(LINE) MAX_LINE

         FROM USER_SOURCE A

        WHERE TYPE in ( 'PROCEDURE', 'PACKAGE' ,'PACKAGE BODY' )

        GROUP BY A.NAME,A.TYPE ) B ON A.NAME||A.TYPE = B.NAME||B.TYPE

WHERE A.TYPE in ('PROCEDURE' , 'PACKAGE', 'PACKAGE BODY' ) AND A.NAME IN

(

'ETL_FACT_JG_SAEINDEX_SCALE'

,'ETL_FACT_JG_SAEINDEX_SCALE_OLD'

,'ETL_DM_JG_CIRC'

)

ORDER BY a.NAME||a.TYPE , LINE;

SPOOL OFF

4、执行刚刚编写的脚本文件,导出指定的存储过程。

连接数据库后,输入:@E:\export.sql

如果遇到了截图中出现的问题,请参照文章结尾的【注意事项】。

5、若要在新的数据库上创建导出的存储过程,只需连上新的数据,然后执行刚生成的脚本文件即可。

连接数据库后输入:@C:\exp\ddl\PRC_JG_JGTZ.SQL

注意事项

若出现乱码,可能需要将编写的sql文件转换为utf-8格式。

若提示无法创建spool文件,请确保目录C:/EXP/DDL存在,或者指定新的路径。


本文标题:oracle如何导出存过,oracle 数据导出
本文网址:http://cdxtjz.cn/article/hssijj.html

其他资讯