oracle如何导存储,oracle 存储过程导出excel文件

如何导出ORACLE指定存储过程

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

创新互联建站是一家专注于做网站、成都网站设计与策划设计,抚松网站建设哪家好?创新互联建站做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:抚松等地区。抚松做网站价格咨询:028-86922220

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

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批量导出存储过程(保持每个存储过程独立)

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

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怎样导入数据库

我给你一些数据库常用的导入导出命令吧:\x0d\x0a该命令在“开始菜单运行CMD”中执行\x0d\x0a一、数据导出(exp.exe)\x0d\x0a1、将数据库orcl完全导出,用户名system,密码accp,导出到d:\daochu.dmp文件中\x0d\x0aexp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、将数据库orcl中scott用户的对象导出\x0d\x0aexp scott/accp@orcl file=d:\daochu.dmp owner=(scott)\x0d\x0a\x0d\x0a3、将数据库orcl中的scott用户的表emp、dept导出\x0d\x0aexp scott/accp@orcl file= d:\daochu.dmp tables=(emp,dept)\x0d\x0a\x0d\x0a4、将数据库orcl中的表空间testSpace导出\x0d\x0aexp system/accp@orcl file=d:\daochu.dmp tablespaces=(testSpace)\x0d\x0a\x0d\x0a二、数据导入(imp.exe)\x0d\x0a1、将d:\daochu.dmp 中的数据导入 orcl数据库中。\x0d\x0aimp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、如果导入时,数据表已经存在,将报错,对该表不会进行导入;加上ignore=y即可,表示忽略现有表,在现有表上追加记录。\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmp full=y ignore=y\x0d\x0a\x0d\x0a3、将d:\daochu.dmp中的表emp导入\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmp tables=(emp)


名称栏目:oracle如何导存储,oracle 存储过程导出excel文件
转载注明:http://cdiso.cn/article/hcgccg.html

其他资讯