一、oracle導出excel
方法一:最簡單的方法---用工具plsql dev
執行File =>new Report Window 。在sql標簽中寫入需要的sql,點擊執行或按快捷鍵F8,會先吃出查詢結果。在右側工具欄,可以選擇按鈕另存為html、copy as html、export results,其中export results按鈕中就可以導出excel文件、csv文件、tsv文件、xml文件。
方法二:最專業的方法---用原始工具sqlplus
原文參見:http://www.eygle.com/archives/2005/04/eoasqlplusieaae.html
我做了一點修改,如下所示:
1.main.sql
用以設置環境,調用具體功能腳本
2.功能腳本-get_tables.sql
為實現具體功能之腳本
通過這樣兩個腳本可以避免spool中的冗余信息,參考:
如何去除SQLPLUS中SPOOL的冗余信息
示例如下:
1.main.sql腳本:
[oracle@jumper utl_file]$ more main.sql |
2.get_tables.sql腳本:
[oracle@jumper utl_file]$ more get_tables.sql |
3.執行並獲得輸出:
[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @d:/main.sql |
此處輸出為xls文件,通過下圖我們可以看到輸出效果:
把main.sql腳本中的,spool tables.xls更改為spool tables.htm,我們可以獲得htm格式輸出,效果如下圖:
方法三:最悲劇的方法,之所以稱為悲劇,是因為這個方法其實很簡單,但是你可能沒有注意。
打開plsql dev工具,執行file=>new sql 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 dev和excel中的列可以相互復制。
方法二:最專業的方法,用sql loader。
原文地址:http://daniel-wuz.javaeye.com/blog/198112
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) --字段名稱列表