我在运行SQLLDR的脚本中遇到错误:
SQL*Loader-522: lfiopn failed for file (/home/abc/test_loader/load/badfiles/TBLLOAD20150520.bad)
据我所知,这是与权限相关的错误,但我想知道在文件夹“/ load”中没有“badfiles”文件夹存在.i已经在load文件夹之外定义了badfiles文件夹,但为什么在错误中它是占据这个位置?是否像我的输入文件有一些问题和SQLLDR试图在提到位置创建一个坏文件?
下面是SQLLDR命令:
$SQLLDR $LOADER_USER/$USER_PWD@$LOADER_HOSTNAME control=$CTLFDIR/CTL_FILE.ctl BAD=$BADFDIR/$BADFILE$TABLE_NAME ERRORS=
0 DIRECT=TRUE PARALLEL=TRUE LOG=$LOGDIR/$TABLE_NAME$LOGFILE &
下面是控制文件temp:
LOAD DATA
INFILE '/home/abc/test_loader/load/FILENAME_20150417_001.csv' "STR '\n'"
APPEND
INTO TABLE STAGING.TAB_NAME
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
COBDATE,
--
--
--
FUTUSE30 TERMINATED BY WHITESPACE
)
是的,您的输入文件有问题,因此sqlldr想要创建包含被拒绝行(BAD文件)的文件。由于权限不足,BAD文件创建失败 - 运行sqlldr的用户无权在您定义为包含BAD文件的文件夹中创建文件。
将BAD文件夹的写权限添加到运行sqlldr的用户或将BAD文件夹放在其他位置。