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