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

作者: 2hei 发表于2008年3月22日 12:37
版权声明: 可以转载, 转载时务必以超链形式标明文章原始出处和作者信息及版权声明
http://www.2hei.net/mt/2008/03/oracle-sqlldr.html

以前也一直在用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文件。

 

 

| | Comments (0) | TrackBacks (0)

发表一个评论

关于这篇文章

这篇文章由2hei2008年3月22日 12:37发布.

上一篇:Apache/resin log输出格式

下一篇:my movable type server mysql service down

回到首页 或者查看归档文章

  • Powered by FeedBurner
  • Add to Google Reader or Homepage
  • Add to My AOL
  • Subscribe in NewsGator Online
  • del.icio.us/2heidel.icio.us/2hei
  • Subscribe to feed feeds