oracle導出excel 方法總結

oracle導出excel

一、oracle導出excel

 

方法一:最簡單的方法---用工具plsql dev

執行File =>newReport Window 。在sql標籤中寫入需要的sql,點擊執行或按快捷鍵F8,會先吃出查詢結果。在右側工具欄,可以選擇按鈕另存爲htmlcopy as htmlexportresults,其中export results按鈕中就可以導出excel文件、csv文件、tsv文件、xml文件。

 

方法二:最專業的方法---用原始工具sqlplus

原文參見:http://www.eygle.com/archives/2005/04/eoasqlplusieaae.html

我做了一點修改,如下所示:

 

1.main.sql
用以設置環境,調用具體功能腳本
2.
功能腳本-get_tables.sql
爲實現具體功能之腳本
通過這樣兩個腳本可以避免spool中的冗餘信息,參考:
如何去除SQLPLUSSPOOL的冗餘信息

示例如下:
1.main.sql
腳本:

[oracle@jumper utl_file]$ more main.sql


set linesize 200


set term off verify off feedback off pagesize 999


set markup html on entmap ON spool on preformat off


spool d:/tables.xls


@d:/get_tables.sql


spool off


exit



2.get_tables.sql
腳本:

[oracle@jumper utl_file]$ more get_tables.sql


select owner,table_name,tablespace_name,blocks,last_analyzed


from all_tables order by 1,2;



3.
執行並獲得輸出:

[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @d:/main.sql




SQL*Plus: Release 9.2.0.4.0 - Production on Mon Apr 25 10:30:11 2005




Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.






Connected to:


Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production


With the Partitioning option


JServer Release 9.2.0.4.0 - Production




Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production


With the Partitioning option


JServer Release 9.2.0.4.0 - Production


[oracle@jumper utl_file]$ ls -l tables.xls


-rw-r--r--    1 oracle   dba         69539 Apr 25 10:30 tables.xls


[oracle@jumper utl_file]$



此處輸出爲xls文件,通過下圖我們可以看到輸出效果:

 

main.sql腳本中的,spooltables.xls更改爲spool tables.htm,我們可以獲得htm格式輸出,效果如下圖:

 

方法三:最悲劇的方法,之所以稱爲悲劇,是因爲這個方法其實很簡單,但是你可能沒有注意。

打開plsql dev工具,執行file=>newsql window ,輸入sql,點擊工具欄執行按鈕或按快捷鍵F8。會顯示出結果集。

點擊結果集的左上方,可全部選中結果集,然後右鍵=>copy,直接粘貼到excel文件中就可以了!

 

方法四:最努力的方法,這種方法稍微有點麻煩,但不用寫腳本,也不用psql dev工具,只用sql plus就可以了。

sqlplus中,執行想要的sql,把結果集copy到文本文件中(或者直接用spool命令直接輸入到文本文件中),把不必要的字符、空格替換成逗號",",然後另存爲csv文件,最後在用excel另存爲exl文件就可以了。

 

 

二、把excel文件數據導入到oracle的某個表中。

 

方法一:最省時的方法,需要藉助plsql dev工具。

        a.複製整個工作簿中的數據到某個表中。

           點擊excel工作區左上角,全部選中數據,ctrl+c 複製整個工作簿中的數據。在plsql dev中,編輯表格表的數據,點擊數據展示區左上角,直接粘貼就可以了(注意excel的第一列應該保持爲空,如果不爲空可以增加一空列,不然你複製的數據就會少一列的)!如下圖

所示:

 

      b.複製某列的數據。

        這個很容易,選中excel某一列的數據,複製,選中oracle某個表的某一列,直接粘貼就可以了。plsql devexcel中的列可以相互複製。

 

方法二:最專業的方法,用sql loader

 

   原文地址:http://daniel-wuz.javaeye.com/blog/198112

 

 

1.錄入excel 測試表格,test.xls
2.
另存爲.csv格式
3.
創建sql*loader控制文件test.ctl,內容如下:
Load data
Infile 'c:/test.csv'
insert Into table test Fields terminated by','(column1,column2,column3,column4,column5)    

需要將數據文件拷貝到對應位置

4.
到數據庫中建立對應的測試表test

create table test (
column1 Varchar2(10),
column2 Varchar2(10),
column3 Varchar2(10),
column4 Varchar2(10),
column5 Varchar2(10)
)

5.
執行導入命令
Sqlldr userid = system/manager control='C:/test.ctl'

導入成功!

附:
Sqlldr
的函數關鍵字說明:
Userid   --oracle
用戶名 userid = username/password
Control --
控制文件名稱 control =‘e:/insert.ctl’
Log     –-
日誌文件名稱 log = ‘e:/insert.log’
Bad     --
損壞文件名稱
Data     --data file name
Discard    --discard file name
Discardmax --number of discards to allow(
默認全部)
Skip       --
導入時跳過的記錄行數(默認0
Load       --
導入時導入的記錄行數(默認全部)
Errors    --
允許錯誤的記錄行數(默認50

ctl
文件內容說明:
Load data
Infile ‘e:/test.csv’          --
數據源文件名稱
Append|insert|replace       --append
在表後追加,insert插入空表,replace替代原有內容
Into table test           --
要導入的數據庫表名稱
[when id = id_memo]     --
過濾條件
Fields terminated by X’09’ --
字段分隔符
(id,name,telphone)        --
字段名稱列表

 

方法三:最悲劇的方法,創建oracle外部表,爲了把excel中的數據導入到數據中而去建立外部表,大題小做了!

    excel文件另存爲csv文件a.csv,然後創建一個外部表t,數據指向a.csv。然後根據外部表創建一個普通的表:

    create table a asselect  * from t ,這樣就可以把最初的excel文件導入到oracle中的表了。

 

方法四:最古典的方法,拼接sql語句。如果你excel熟的話,這種方法也不錯。

    excel中,把數據拼接成如下sql語句:

   insert into empvalues('1','2','3');

   insert into empvalues('4','5','6');

   insert into empvalues('7','8','9');

 

copy 出以上sql,執行就可以了!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章