怎么在oracle下写一个脚本,导出表数据为EXCEL格式文件

怎么在oracle下写一个脚本,导出表数据为EXCEL格式文件,第1张

无法直接保存到excel中,但是可以保存到csv文件,同样是excel的格式,方法如下:

譬如要把文件生成在d盘下的test目录下:

1,在d盘根目录下新建test目录

2,sqlplus以system用sysdba登录

3,create or replace directory TMP as ’d:\test’;

4,grant read on directory TMP to user;

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

然后建立存储过程,表是随便建了一个,最后的文件名按要求需要按照当前日期的前一天生成,所以后边文件名的地方write_file_name处就按照要求来了

create or replace PROCEDURE SP_OUTPUT

(

on_flag OUT NUMBER,

out_reason OUT VARCHAR2)

is

v_code number;

v_text varchar2(255);

file_handle utl_filefile_type;

Write_content VARCHAR2(1024);

Write_file_name VARCHAR2(50);

v_aaa varchar2(5);

v_bbb varchar2(5);

cursor cur_sp_out

is

select aaa,bbb

from aaa;

begin

open cur_sp_out;

loop

fetch cur_sp_out into v_aaa,v_bbb;

exit when cur_sp_out%notfound;

write_file_name := to_char(SYSDATE,'YYYYMMDD')||'xls';

file_handle := utl_filefopen('TMP',write_file_name,'a');

write_content := v_aaa||' '||v_bbb;

--write file

IF utl_fileis_open(file_handle) THEN

utl_fileput_line(file_handle,write_content);

END IF;

--close file

utl_filefclose(file_handle);

end loop;

close cur_sp_out;

v_code := 0;

v_text := '完成';

exception

when others then

on_flag := SQLCODE;

out_reason := SQLERRM;

begin

IF utl_fileis_open(file_handle) THEN

utl_filefclose(file_handle);

end IF;

end;

rollback;

end;

这样基本就完成了,但是建立完毕后需要重启数据库,否则文件写不进指定的目录下

需要注意的是: write_content := v_aaa||' '||v_bbb; 这个位置

v_aaa|| 和v_bbb中间引号的地方是TAB符,否则输出来的XLS文件中,会把这些字符串合在一个单元格中。

用工具和脚本都可以实现你的要求。工具PL/SQL就可以,tool>export user objects 然后选中你要导出的表。

脚本的话,在dos窗口,用exp 用户名/密码@数据库名file=目录 owner=(用户) rows=n就行了。

1完整的导出整个数据库表结构即dmp文件方法:

Tools-->Export Tables ,选择Oracle Export 默认选项即可,在Output file选择一个输出目标

点击Export,即可导出表结构

2导出表中数据:

Tools-->Export Tables :选择SQL Inserts 遇到大字段(clob,blob)会出问题导不出来,在此可以

选择需要导出的表,在Output file中选择导出的目标,点击Export即可导出,在此有几个选项

可以去掉所有的可选项直接导出

3导出数据库中所有的或是所选表的数据库建表脚本:

Tools-->Export User Objects去掉下面三个include 可选项,选择Single file)在Output file

中选择输出目标,点击Export即可

oracle导出数据库用exp语句。

步骤:

一、win键+R键,输入cmd,打开命令提示符。

二、然后根据实际情况选择不同的exp语句。

exp语句详解:

1 获取帮助

exp help=y

2 导出一个完整数据库

exp system/manager file=bible_db log=dible_db full=y

3 导出数据库定义而不导出数据

exp system/manager file=bible_db log=dible_db full=y rows=n

4 导出一个或一组指定用户所属的全部表、索引和其他对象

exp system/manager file=seapark log=seapark owner=seapark

exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)

注意:在导出用户时,尽管已经得到了这个用户的所有对象,但是还是不能得到这些对象引用的任何同义词。解决方法是用以下的SQLPlus命令创建一个脚本文件,运行这个脚本文件可以获得一个重建seapark所属对象的全部公共同义词的可执行脚本,然后在目标数据库上运行该脚本就可重建同义词了。

SET LINESIZE 132

SET PAGESIZE 0

SET TRIMSPOOL ON

SPOOL c:\seaparksyn

SELECT 'Create public synonym '||synonym_name

||' for '||table_owner||''||table_name||';'

FROM dba_synonyms

WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC';

SPOOL OFF

5 导出一个或多个指定表

exp seapark/seapark file=tank log=tank tables=tank

exp system/manager file=tank log=tank tables=seaparktank

exp system/manager file=tank log=tank tables=(seaparktank,amyartist)

6 估计导出文件的大小

全部表总字节数:

SELECT sum(bytes)

FROM dba_segments

WHERE segment_type = 'TABLE';

seapark用户所属表的总字节数:

SELECT sum(bytes)

FROM dba_segments

WHERE owner = 'SEAPARK'

AND segment_type = 'TABLE';

seapark用户下的aquatic_animal表的字节数:

SELECT sum(bytes)

FROM dba_segments

WHERE owner = 'SEAPARK'

AND segment_type = 'TABLE'

AND segment_name = 'AQUATIC_ANIMAL';

7 导出表数据的子集(oracle8i以上)

NT系统:

exp system/manager query='Where salad_type='FRUIT'' tables=amysalad_type

file=fruit log=fruit

UNIX系统:

exp system/manager query=\"Where salad_type=\'FRUIT\'\" tables=amysalad_type

file=fruit log=fruit

8 用多个文件分割一个导出文件

exp system/manager

file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)

log=paycheck, filesize=1G tables=hrpaycheck

9 使用参数文件

exp system/manager parfile=bible_tablespar

bible_tablespar参数文件:

#Export the sample tables used for the Oracle8i Database Administrator's Bible

file=bible_tables

log=bible_tables

tables=(

amyartist

amybooks

seaparkcheckup

seaparkitems

)

10 增量导出

“完全”增量导出(complete),即备份整个数据库

exp system/manager inctype=complete file=990702dmp

“增量型”增量导出(incremental),即备份上一次备份后改变的数据

exp system/manager inctype=incremental file=990702dmp

“累计型”增量导出(cumulative),即备份上一次“完全”导出之后改变的数据

exp system/manager inctype=cumulative file=990702dmp

以上就是关于怎么在oracle下写一个脚本,导出表数据为EXCEL格式文件全部的内容,包括:怎么在oracle下写一个脚本,导出表数据为EXCEL格式文件、如何导出oracle数据库表结构、oracle 怎么导出全部表结构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10202090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存