Oracle Sql Loader使用示例

来源:互联网 发布:儿童编程入门教程 编辑:程序博客网 时间:2024/05/20 07:59

今天研究了下Oracle 数据库的一个小工具 SQL LOADER,感觉用起来还是挺方便的,特别是用来从csv中导入数据。

安装完成oracle数据库后,就带了这个工具,启动的命令如下:

sqlldr userid=om/om control=load_line.ctl log=line.log

其中userid是数据库用户名和密码,control参数是一个控制文件,或者说导入的脚本,log是导入的日志。

主要的导入逻辑都要写在control文件中,下面是一个例子:

OPTIONS(SKIP=1)                                   -- 跳过第一行load data                                                    -- 加载数据CHARACTERSET ZHS16GBK               --字符集infile 'lines.csv'                                           -- 数据文件badfile 'line.bad'                                         -- 导入不成功的行,存放在一个文件中discardfile 'line.dis'                                    -- 不符合删选条件的 存放在一个文件中append into table CONTRACT_LINE     -- 导入方式是追加记录到表:CONTRACT_LINEfields terminated by ","                              -- 数据以逗号分隔trailing nullcols                                           -- column可以为空 -- 以下是表中的部分字段,顺序要和数据文件中的顺序一致(ID "TO_NUMBER(:ID)",                            -- 使用TO_NUMBER函数把字符串转成NUMBER类型HEADER_ID "TO_NUMBER(:HEADER_ID)",LINE_NO "TO_NUMBER(:LINE_NO)",SHIP_MNFT_NO,SHIP_PLANT,PLANT_TYPE,SHIP_OWNER,OWNER_TYPE,SHIP_BROKER,BROKER_TYPE,SHIP_CLSFCT_SOCIETY,SHIP_NAME,IMO_NO,SHIP_NO_INTERNAL,CONTRACT_TYPE,SIGN_OFF_DATE "to_date(:SIGN_OFF_DATE,'yyyy/mm/dd')",   -- 把字符串转成日期格式EFFECTIVE_DATE "to_date(:EFFECTIVE_DATE,'yyyy/mm/dd')",ABANDON_DATE "to_date(:ABANDON_DATE,'yyyy/mm/dd')",MEMO,PRICE "TO_NUMBER(:PRICE)",WORK_START_DATE "to_date(:WORK_START_DATE,'yyyy/mm/dd')",FG_COMPLETION_DATE "to_date(:FG_COMPLETION_DATE,'yyyy/mm/dd')",CURRENCY,EXCHANGE_RATE "TO_NUMBER(:EXCHANGE_RATE)",SHIP_PRICE "TO_NUMBER(:SHIP_PRICE)",CREATED_BY,CREATED_AT "to_date(:CREATED_AT,'yyyy/mm/dd')",STATUS,DELETED)

虽然说ORACLE有OGG,ODI,OSB,SOA 不过SQL LOADER这样的小工具做ORACLE数据库的导入还是非常的快速高效。