当前位置: 首页 > database > 正文

oracle sqlldr 实际运用中的几个问题

以前也一直在用sqlldr进行oracle的数据导入工作,但由于数据表结构比较简单,数据格式比较规范,所以简单的脚本即可完成任务,没有仔细的进行研究。

最近因为项目需要,要处理一个稍微复杂一点的表,涉及到日期字段,还有自增序列,字段比较复杂不规则,有很多空列,经过一番研究后,终于搞定,特此总结一下。

1. 空字段处理: TRAILING NULLCOLS   但是整行不能全空,否则整行无法插入
2. 日期字段处理:格式化处理 AddDate “to_date(:AddDate,”’yyyy-mm-dd hh24:mi:ss”’)”
3. 自定义字段分割符 “|”
4. 采用触发器来处理自增字段,具体的建立方法可参考我的另一篇关于触发器的介绍带有条件的触发器trigger

ldr脚本如下:

vi sql.ctl    

LOAD DATA
INFILE ‘/home/oracle/data/table.data’
APPEND INTO TABLE table
fields terminated by ‘|’
TRAILING NULLCOLS

(
ID,
USERNAME,
PASSWORD,
AddDate “to_date(:AddDate,”’yyyy-mm-dd hh24:mi:ss”’)”
)

数据文件样式  table.data

|test|test|2008-03-20 18:09:10

|2hei|2hei|2008-03-20 18:09:10

|admin|admin|2008-03-20 18:09:10

 

loader 脚本运行方式:

切换到oracle用户  su – oracle

或者root下执行 su -l oracle -c “sqlldr userid=2hei/2hei control=/home/oracle/data/sql.ctl log=/home/oracle/log/sql.log bad=/home/oracle/log/bad.log”

执行后可以查表,看看字段的插入情况。

如果有问题可以看执行后的log 或者 bad文件。

 

 

本文固定链接: http://2hei.net/oracle_sqlldr.html | 2hei's site

该日志由 2hei 于2008年03月22日发表在 database 分类下,
原创文章转载请注明: oracle sqlldr 实际运用中的几个问题 | 2hei's site
关键字: , ,

报歉!评论已关闭.