將oracle中資料轉存到excel中

安佰勝發表於2011-02-24

 

 

今天一個朋友問我怎麼把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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章