乌托邦博客

You see? Even death has a heart

« 异地办理身份证Windows Live SkyDrive 刑满出狱 »

使用sqlldr的一些经验

Oracle      Sqlldr是Oracle用于文本导入的一个工具,我想使用率应该是很高的。

      我就经常需要将一些文本导入到数据库里面,速度还是可以的,只要不是特别的大。其实一般用DataStage做JOB导入,不过用sqlldr只要一命令就搞定了,很方便不是?

      要使用sqlldr必须编写control文件,其实很简单,按以下格式编写就行:

LOAD DATA INFILE '%UNL_FILE%' BADFILE '%ERR_FILE%'
Truncate
INTO TABLE Test FIELDS TERMINATED BY "|" TRAILING NULLCOLS
(
 DT DATE "YYYY-MM-DD" NULLIF (DT="     "),
  PAR_DATE
)
      INFILE后面接的是你将要导入的文件,BADFILE是错误文件,TERMINATED BY 指的是你的文本分隔符,我这里是管道符|,Truncate是入库方式,可以是apand以及insert。

      INTO TABLE 后面就是接表名了,我这里是Test,表中有二个字段DT以及PAR_DATE分别是DATE型和Char型。

      我用sqlldr曾经碰到过一个比较麻烦的问题,就是把空格导入到数据库中DATE类型的字段,常常会报这不是一个合法的格式,或者把空格导入到NUMBER类型的字段中,也会这样报。
      我写这文章的很大的一个原因就是,记录一下解决类似的问题的方法,如果是DATE型,可以指定格式,我这里是"YYYY-MM-DD",后面的NULLIF子句是我做了很多试验才试出来的,后面是字段名等于某个值的时候置为NULL,我这里是10个空格。

      如果是NUMBER也是一样的,把你想要替换成NULL值的字段加上NULLIF子句就行了。我就是通过这个方法把空格导进去的。

      如有问题,欢迎交流!!!QQ:94424751

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710 Code detection by Codefense

Copyright 2005-2007 Bootad.cn. Some Rights Reserved
.粤ICP备07062332号 QQ:94424751