关于SQLLDR的VAR参数用法

在学习使用SQLLDR的VAR参数时,发现总是报如下错误:

[sql]  view plain copy print ?
  1. SQL*Loader-501:  无法读取文件 (ldr_case2.dat)  
  2. SQL*Loader-563:  VAR 记录的长度错误  
  3. SQL*Loader-509:  系统错误: 操作成功完成。  
  4. SQL*Loader-2026:  加载因 SQL 加载程序无法继续而被终止。  


很是郁闷。。。

我的控制文件是这样的:

[sql]  view plain copy print ?
  1. Load DATA  
  2. INFILE 'D:\ldr_case2.dat' "var 3"  
  3. truncate INTO TABLE BONUS  
  4. FIELDS TERMINATED BY ","  
  5. (ENAME,JOB)  

数据文件ldr_case2.date内容如下:


009hello,cd,010world,im,
012my,name is,
------------------------------------------------------

最后发现这个VAR参数是严格按照字节数控制录入长度的。譬如说:var 3,选取前3个字节为长度控制字节。那么

首先取数据为9个字节即hello,cd,然后注意再读取3个字节即为长度控制字节,这里是010,读取10个字节长数据.那么就是读world,im,\r(回车),再读3个字节的时候就会出错,因为在window下一个回车对应\r\n(回车换行2个字节),linux下仅对应一个\n.所以更改ldr_case2.date内容如下后即正常.

009hello,cd,010world,im
011my,name is,


转自 :http://blog.csdn.net/edcvf3/article/details/8226581

你可能感兴趣的:(关于SQLLDR的VAR参数用法)