在学习使用SQLLDR的VAR参数时,发现总是报如下错误:
SQL*Loader-501: 无法读取文件 (ldr_case2.dat)
SQL*Loader-563: VAR 记录的长度错误
SQL*Loader-509: 系统错误: 操作成功完成。
SQL*Loader-2026: 加载因 SQL 加载程序无法继续而被终止。
很是郁闷。。。
我的控制文件是这样的:
Load DATA
INFILE 'D:\ldr_case2.dat' "var 3"
truncate INTO TABLE BONUS
FIELDS TERMINATED BY ","
(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,