转:加载的数据中有换行符处理方法

5.3.10  要加载的数据中有换行符怎么办

由于标准换行符也是SQLLDR识别数据行结束的标志符,因此要将含换行符的数据加载到表中稍复杂一点点,而且需要根据实际情况来处理,不同情况的处理方式也不一样,但基本思路是相同的,就是要同SQLLDR指明什么时候才需要进行换行操作。

5.3.10.1  手工指定的换行符

在手工指定换行符的情况下,数据文件中的换行符并不是标准的换行标志,而是用户自定义的一个标识字符(或多个字符组成),这种情况的处理比较简单,如数据文件如下:

 
 
  1. 10,SMITH,SALES MANAGER,This is SMITH.\nHe is a Sales Manager.  
  2. 11,ALLEN.W,TECH MANAGER,This is ALLEN.W.\nHe is a Tech Manager.  
  3. 16,BLAKE,HR MANAGER,This is BLAKE.\nHe is a Hr Manager. 

示例代码保存为数据文件ldr_case11_1.dat。

我们可以通过控制文件,在数据加载前处理remark列的数据,将用户指定的"\n"字符替换为chr(10),即标准换行符,创建控制文件如下:

 
 
  1. LOAD DATA  
  2. INFILE ldr_case11_1.dat  
  3. TRUNCATE INTO TABLE MANAGER  
  4. FIELDS TERMINATED BY "," 
  5. (MGRNO,  
  6.  MNAME,  
  7.  JOB,  
  8. REMARK "replace(:remark, '\\n',chr(10))" 

示例代码保存为控制文件ldr_case11_1.ctl。

这里需要注意的是,替换时必须指定"\\n"而不只是"\n",因为"\n"会被SQLLDR识 别成换行符并转换成换行标志,这样可能导致数据加载出错。而"\"是默认转义符,指定该转义符后SQLLDR就会将"\n"识别成普通字符了。哎呀!说了 半天,一会儿一个"\"一会两个"\",你可能都晕了,还是通过测试来说明吧。

执行SQLLDR命令加载数据:

 
 
  1. F:\oracle\script>SQLLDR SCOTT/TIGER CONTROL=LDR_CASE11.CTL  
  2. SQL*Loader: Release 10.2.0.1.0 - Production on   
  3. 星期一 3月 16 15:50:04 2009

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14019112/viewspace-663941/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14019112/viewspace-663941/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值