今天有收到一個需求,
要將excel資料存回Oracle資料庫。
環境是windows 7,Oracle版本11g。
一開始馬上想到的是PowerPivot
但因為公司的excel版本只到2003,
PowerPivot只能用excel 2010以上版本。
所以只好用別的方式存回去。
在這邊將excel資料抓出來存到txt,
然後使用oracle sqlldr將資料存回去。
oracle sqlldr的使用流程如下:
1. 確認要輸入的txt檔案內容,並修改成輸入的格式。
2. 在目標資料庫先創建好接應的資料表。
3. 建立好輸入資料的 control 檔。
4. 執行sqlldr 讀取 control 檔,寫入資料庫。
5. 確認資料進入資料庫。
先準備好內含資料的 txt 檔,
每個資料以 "," 分隔,
每筆資料要要分行,如下
aaa.txt
----------------------------------
1, aaa, 5555
2, bbb, 6666
3, ccc, 7777
----------------------------------
確認格式正確後,
進入資料庫create相應的table。(原本就有相應的table也可以,不過操作要更注意)
Create table TEST(
A int,
B varchar(20),
C varchar(20)
);
接著寫入ctl檔案,
test.ctl
----------------------------------
load data
infile "aaa.txt"
badfile "aaa.bad"
discardfile "aaa.discard"
into table TEST
fields terminated by ','
( A, B, C)
----------------------------------
load data (說明要幹嘛)
infile "aaa.txt" (匯入資料檔案位址)
badfile "aaa.bad" (放資料格式不符合的)
discardfile "aaa.discard" (放不符合過濾條件的)
into table TEST (資料存放的table)
fields terminated by ',' (資料用甚麼分隔)
接著進入cmd,找到oracle安裝位址的bin資料夾
D:\app\Q\product\11.2.0\dbhome_1\BIN>set ORACLE_SID=YourDbName
D:\app\Q\product\11.2.0\dbhome_1\BIN>sqlldr Account/Password control=test.ctl
資料就會進入資料庫了。
請在進入資料庫檢查是否正確。
sqlldr會自動幫你生出一個 test.log 檔案,(檔案名稱會與你的ctl檔相同)
也有bad檔案和discard檔案,若是資料有問題可以去找這幾個檔案檢視。
參考資料:
http://blog.roodo.com/mywork/archives/2015107.html
深入閱讀:
http://docs.oracle.com/cd/B19306_01/server.102/b14215/ldr_concepts.htm
http://www.dedecms.com/knowledge/data-base/sql-server/2012/0821/11767.html
沒有留言:
張貼留言