現有csv或txt文件要導入到oracle數據庫中,那麼選用sqlldr來導入是效率很高的(在一臺配置爲cpu1.8G雙核 2G內存的機器上, 將一個72列65M的表導入只用了40秒)。
數據庫表:students(name age birth sex)姓名 年齡 出生日期 性別
新建文件insert.ctl,內容如下:
load data
infile 'students.csv'
append into table wp.students
fields terminated by ','
trailing nullcols
(
name ,
age ,
birth date,
sex filler
)
說明:
1 infile 'students.csv'指明要讀取的文件
2 append into table wp.students 指明是追加的方式添加數據,即數據庫原數據保留。wp是用戶,student是要寫入數據的表
3 fields terminated by ',' 指明數據間有分隔符是逗號
4 sex filler指明這一列不讀取
5 如果日期類型特別精確時,如:2009-12-09 12:38:24 可以寫成birth date "YYYY-MM-DD HH24:MI:SS"
6 若csv文件中的日期過長,如:2009-12-09 12:38:24.000 可以寫成birth "to_date(substrb(:birth , 1, 19), 'YYYY-MM-DD HH24:MI:SS')"
7 若值可能爲空,可以寫爲 birth "case when :in_time='null'
then null
else to_date(substrb(:birth, 1, 19), 'YYYY-MM-DD HH24:MI:SS')
end"
運行命令行,進入insert.ctl所在的路徑,鍵入:
sqlldr wp/wp control=insert.ctl
即可導入。在該路徑下會生成日誌。