sab*_*bya 1 bash shell oracle11g sql-loader
我正在运行SQLLDR的脚本中遇到以下错误:
SQL*Loader-522: lfiopn failed for file (/home/abc/test_loader/load/badfiles/TBLLOAD20150520.bad)
Run Code Online (Sandbox Code Playgroud)
据我所知,这是与权限相关的错误,但是我想知道文件夹“ / load”中没有“ badfiles”文件夹。我已经在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 &
Run Code Online (Sandbox Code Playgroud)
以下是控制文件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
)
Run Code Online (Sandbox Code Playgroud)
小智 5
是的,您的输入文件有问题,因此sqlldr要创建一个包含被拒绝的行的文件(BAD文件)。由于权限不足,BAD文件创建失败-运行sqlldr的用户无权在您定义为包含BAD文件的文件夹中创建文件。
向运行sqlldr的用户添加BAD文件夹上的写特权,或将BAD文件夹放在其他位置。