Oracle如何編寫一個sqlldr實例
準備工作
首先在D盤創(chuàng)建文件夾,命名為sqlldr
具體步驟
1、整理要導入數(shù)據(jù),去除列名另存為csv文件
特別注意:csv文件是純文本文件,一般以逗號分隔,如果導入的數(shù)據(jù)中存在逗號,可以給表格中的數(shù)據(jù)加上雙引號將數(shù)據(jù)括起來。
數(shù)據(jù)內(nèi)容:
sn_orderitem_20210412
id | order_id | item_id | item_name | price | item_num |
AB001 | A001 | 1001 | A | 0.15 | 1 |
AB002 | A001 | 1002 | B | 20 | 1 |
AB003 | A001 | 1003 | C | 40 | 2 |
AB004 | A005 | 1001 | A | 0.15 | 1 |
AB005 | A005 | 1004 | D | 200 | 6 |
AB0015 | A015 | 1005 | E | 40.5 | 1 |
AB0016 | A019 | 1006 | F | 50 | 1 |
AB0017 | A019 | 1007 | G | 24.5 | 2 |
AB0018 | A020 | 1008 | H | 10.3 | 1 |
AB0001 | A,B |
結(jié)果:
給表格數(shù)據(jù)加上引號:!"@!"
標將數(shù)據(jù)另存為CSV UTF-8(Comma delimited)格式,存入sqlldr文件夾
2、在Oracle上創(chuàng)建存放數(shù)據(jù)的Table
create table sn_orderitem_20210412( id varchar(20), order_id varchar(20), item_id varchar(20), item_name varchar(20), price number, item_num number);
3、創(chuàng)建ctl文件
1.在sqlldr里創(chuàng)建一個新的文本文件
2.編輯信息如下
load data characterset UTF8 infile 'D:\sqlldr\sn_orderitem_20210412.csv' append into table sn.sn_orderitem_20210412 fields terminated by ',' trailing nullcols (id OPTIONALLY ENCLOSED BY '"' ,order_id OPTIONALLY ENCLOSED BY '"' ,item_id OPTIONALLY ENCLOSED BY '"' ,item_name OPTIONALLY ENCLOSED BY '"' ,price OPTIONALLY ENCLOSED BY '"' ,item_num OPTIONALLY ENCLOSED BY '"' )
3.將文本文件另存為 sn_orderitem_20210412.ctl
解析:
load data --控制文件標識
characterset UTF8 --設(shè)置編碼格式,防止中文亂碼infile 'XXX.csv' --即將導入的csv文件及路徑
append into table XXX --Oracle上創(chuàng)建的表,在原表進行追加數(shù)據(jù)
fields terminated by ',' --以逗號分隔 (分隔方式可以是空格,制表符X'09'……)
trailing nullcols --允許某地為空值,保證缺少部分字段時,整個表格不錯位
(XX optionally enclosed by '"' --每個字段都是用“”包圍(當文本里的字符和分隔符有沖突是可以使用)
……
)拓展:
導入數(shù)據(jù)共有四種方式:
- insert:為缺省方式,在數(shù)據(jù)裝載開始時要求表為空;
- append:在表中追加新記錄;
- replace:刪除舊記錄,替換成新裝載的記錄;
- truncate:刪除舊記錄(用 truncate table 語句),替換成新裝載的記錄。
4、編寫Windows批處理文件
1.在sqlldr里創(chuàng)建一個新的文本文件
2.編輯信息如下
D:\app\isadmin\product\11.2.0\dbhome_1\BIN\SQLLDR.EXE userid=test/test@local11g control=D:\sqlldr\sn_orderitem_20210412.ctl log=D:\sqlldr\sn_orderitem_20210412.log bad=D:\sqlldr\sn_orderitem_20210412.bad SILENT=(HEADER,FEEDBACK) errors=0
3.將文本文件另存為 sn_orderitem_20210412.bat
解析:
D:\app\isadmin\product\11.2.0\dbhome_1\bin\sqlldr.exe --sqlldr工具調(diào)用
userid=test/test@local11g --用戶名/密碼@庫名
control=D:\sqlldr\sn_orderitem_20210412.ctl --控制文件絕對路徑
log=D:\sqlldr\sn_orderitem_20210412.log --指定日志文件路徑
bad=D:\sqlldr\sn_orderitem_20210412.bad --指定錯誤文件路徑
silent=(header,feedback) --隱藏數(shù)據(jù)載入過程中的提示信息
errors=0 --允許錯誤行數(shù)為0
5、雙擊運行Windows批處理文件
6、查詢結(jié)果
導入Oracle里的數(shù)據(jù)會帶上雙引號,回去看了一下csv文件發(fā)現(xiàn),從excel里加引號后導出csv文件后,雙引號會變?yōu)槿?,故造成此結(jié)果,我的方法直接在txt文件中將三引號替換為雙引號后再導入,如果有其它方法的小伙伴可以評論區(qū)交流~當然如果你的數(shù)據(jù)里沒有出現(xiàn)逗號,可以不需要用引號來分隔,因此也不會出現(xiàn)這樣的問題啦
除了轉(zhuǎn)化為csv,也可以用txt文件進行導入,只需要將excel轉(zhuǎn)化為以制表符分隔的txt文本就可以了創(chuàng)建.bat Windows批處理文件的便利之處是可以重復使用,只需修改控制文件中需要變動的參數(shù)后再次運行就可以了,也可以進行批量導入
到此這篇關(guān)于Oracle如何編寫一個sqlldr實例的文章就介紹到這了,更多相關(guān)Oracle編寫sqlldr內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle DATABASE LINK(DBLINK)創(chuàng)建與刪除方法
這篇文章主要介紹了Oracle DATABASE LINK(DBLINK)創(chuàng)建與刪除方法,需要的朋友可以參考下2016-02-02