bash - SQL*Loader-522 : lfiopn failed for file

标签 bash shell oracle11g sql-loader

我在运行 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/

相关文章:

java - 如何从 Java 运行时安装 .pkg?

sql - Oracle函数: How to pass a table name as parameter,并使用游标结果作为表名?

sql - 如何在 oracle 11g 中授予对触发器和同义词的权限

database - 执行程序 Oracle 11g

xcode - 如何从 shell 脚本调用 apple 脚本?

macos - 在 OSX Mavericks 中找不到 mvn 命令

java - log4j2不登录子进程

bash - 从 Bash 中的自定义选项读取参数

java - adb命令在java中的等效版本?

Bash:使用另一个变量+文本分配给一个变量