我在运行 SQLLDR 的脚本中遇到以下错误:
SQL*Loader-522: lfiopn failed for file (/home/abc/test_loader/load/badfiles/TBLLOAD20150520.bad)
据我所知,这是与权限相关的错误,但我想知道文件夹“/load”中是否存在“badfiles”文件夹。我已经在加载文件夹外定义了 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 文件夹放在其他地方。
关于bash - SQL*Loader-522 : lfiopn failed for file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348567/