数据文件aa.dat
13103104352<@#>13103107584<@#>Y<@#>20090618203357<@#>aaaa01<@#>7390 <@#>421402250
13103107788<@#>13103107792<@#>N<@#>20090621190919<@#>aaaa01<@#>7390 <@#>421403348
13103107814<@#>13103107829<@#>Y<@#>20090622102453<@#>aaaa01<@#>7390 <@#>421403491
13103107794<@#>13103107798<@#>N<@#>20090621205659<@#>aaaa01<@#>7390 <@#>421403361
13103107814<@#>13103107826<@#>Y<@#>20090622095912<@#>aaaa01<@#>7390 <@#>421403468
控制文件bb.ctl
OPTIONS(BINDSIZE=16777216,READSIZE=16777216,ERRORS=-1,ROWS=50000)
LOAD DATA
INFILE ‘aa.dat' "STR X'0a'"
APPEND INTO TABLE XYZ
FIELDS TERMINATED BY X'3c40233e' TRAILING NULLCOLS
(
MCONTRACT_NO CHAR(14),
ACONTRACT_NO CHAR(14),
VALID_FLAG CHAR(1),
OP_TIME CHAR(14),
OP_LOGINNO CHAR(6),
OP_CODE CHAR(5),
UPDATE_ACCEPT CHAR(14)
)OP_TIME 在数据库其实是date类型的,这控制文件时OCIULDR自动生成的。在一台Unix服务器上执行没问题,可以正常入库。
但是在另一台却不能正常入库,日志报Record 6136059: Rejected - Error on table XYZ, column OP_TIME.ORA-01861: literal does not match format string.
这是为什么啊?求助。
13103104352<@#>13103107584<@#>Y<@#>20090618203357<@#>aaaa01<@#>7390 <@#>421402250
13103107788<@#>13103107792<@#>N<@#>20090621190919<@#>aaaa01<@#>7390 <@#>421403348
13103107814<@#>13103107829<@#>Y<@#>20090622102453<@#>aaaa01<@#>7390 <@#>421403491
13103107794<@#>13103107798<@#>N<@#>20090621205659<@#>aaaa01<@#>7390 <@#>421403361
13103107814<@#>13103107826<@#>Y<@#>20090622095912<@#>aaaa01<@#>7390 <@#>421403468
控制文件bb.ctl
OPTIONS(BINDSIZE=16777216,READSIZE=16777216,ERRORS=-1,ROWS=50000)
LOAD DATA
INFILE ‘aa.dat' "STR X'0a'"
APPEND INTO TABLE XYZ
FIELDS TERMINATED BY X'3c40233e' TRAILING NULLCOLS
(
MCONTRACT_NO CHAR(14),
ACONTRACT_NO CHAR(14),
VALID_FLAG CHAR(1),
OP_TIME CHAR(14),
OP_LOGINNO CHAR(6),
OP_CODE CHAR(5),
UPDATE_ACCEPT CHAR(14)
)OP_TIME 在数据库其实是date类型的,这控制文件时OCIULDR自动生成的。在一台Unix服务器上执行没问题,可以正常入库。
但是在另一台却不能正常入库,日志报Record 6136059: Rejected - Error on table XYZ, column OP_TIME.ORA-01861: literal does not match format string.
这是为什么啊?求助。
linux:
export NLS_DATE_FORMAT=YYYYMMDDHH24MISSwindows:
set NLS_DATE_FORMAT=YYYYMMDDHH24MISS
OP_TIME CHAR(14),这个格式写的有问题。
改成to_timestamp(:OP_TIME,'yyyymmddhh24miss'),
这样不论OP_TIME这一列是date类型或者是timestamp类型,都可以正确导入的。
如果date类型的话,sqlldr导入的时候会自动截断然后导入。
效果一样的