ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 将oracle中数据转存到excel中

将oracle中数据转存到excel中

原创 Linux操作系统 作者:安佰胜 时间:2011-02-24 12:12:16 0 删除 编辑

 

 

今天一个朋友问我怎么把200万的数据转的excel里,说老板要看,而且只要excel格式的,他想到的方法就是用toad查出来在转存到excel里。我说那得跑到什么时候去啊,设计到网络传输和数据展现,万一中间有点什么问题就展示不出来了。以前用ue的时候经常要把ue里的列放到excel里,所以知道excel的列中间分隔其实就是一个TAB,所以我想到的方法就是用spool的方式把格式化后的查询结果记录到文本里,因为文本已经有了excel需要的格式,所以应该是可以直接打开的。为了确保给他的建议能用,自己测试了下

 

--创建测试表并插入测试数据

SQL> create table name(id int,name varchar2(30)) tablespace btest;

Table created.

 

SQL> insert into name select 1,'anbaisheng' from dual;

1 row created.

 

SQL> insert into name select 2,'xiangxiang' from dual;

1 row created.

 

SQL> insert into name select 3,'kong' from dual;

1 row created.

 

SQL> commit;

 

 

--准备脚本1.sql

--这里要注意的是字段idname之间并入的是TAB字符而不是空格

set wrap off

set linesize 5000

set trimspool on

set heading off

set feedback off

spool d:\1.xls

select id||'       '||name from name;

spool off

 

--sqlplus下调用1.sqllinux一样,不过建议后台运行

--这样就会在目的位置生成xls文件

--我的环境结果如下:

 

 

1

anbaisheng

2

xiangxiang

3

kong

 

--linux下可以将类似如下代码放入 shell脚本中,之后后台运行

 

Sqlpus “/ as sysdba” <

Conn user/passwd

@1.sql

Exit

EOF

Exit

 

--补充

 

个人不建议大量数据一起spool到一个excel文件中的做法,excel单个文件貌似是有最大记录数的限制,虽然2007支持的数量有所增加,但太大的文件打开也是个问题,所以建议用rownum限制下每次输出的数据量,分多个文件存放比较靠谱。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13177610/viewspace-687846/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-08-26

  • 博文量
    215
  • 访问量
    616865