ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 转:加载的数据中有换行符处理方法

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

原创 Linux操作系统 作者:hxmflying 时间:2010-05-28 17:29:16 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-29

  • 博文量
    23
  • 访问量
    69710