SQL加载程序错误 - SQL * Loader-503:将扩展名附加到file()时出错

时间:2014-10-06 18:56:31

标签: unix sed sql-loader

我正在尝试使用SQL Loader将一堆Java文件加载到临时表中。我不断收到主题错误,我不确定原因。

我尝试运行的可执行文件看起来像这样。

for i in `find <files in certain directory.java>`
do
echo "File name = ${i}"
COMMAND='sed'; ARG='s/XXXX/${i}/'
echo $COMMAND  '; '  $ARG
cat test_load.ctl | $COMMAND "$ARG" > test_load_2.ctl
sqlldr <user>/<password> control=test_load_2.ctl log=<file_name>.log
done

我的test_load.ctl文件如下所示:

我试图用上面Java目录中的循环文件替换XXXX INFILE。

LOAD DATA
INFILE 'XXXX'
BADFILE '/<directory>/<filename>.bad'
DISCARDFILE '/<directory>/<filename>.dsc'
APPEND INTO TABLE "<SCHEMA>"."<TABLE_NAME>"
TRAILING NULLCOLS
(
 id sequence (1, 1),
 raw_string position (1:4000) char(4000),
 file_name,
 dir_path,
 load_date sysdate,
 line_number sequence (1, 1)
)

我的test_load_2.ctl文件如下所示:

LOAD DATA
INFILE '${i}'
BADFILE '/<directory>/<filename>.bad'
DISCARDFILE '/<directory>/<filename>.dsc'
APPEND INTO TABLE "<SCHEMA>"."<TABLE_NAME>"
TRAILING NULLCOLS
(
 id sequence (1, 1),
 raw_string position (1:4000) char(4000),
 file_name,
 dir_path,
 load_date sysdate,
 line_number sequence (1, 1)
)

我一直收到这个错误:

SQL*Loader-503: Error appending extension to file ()
Additional information: 7217

我非常确定test_load_2.ctl文件中的INFILE参数存在问题,但我不是100%肯定如何解决这个问题?

我也可能在可执行文件中做错了。

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

控制文件中不会发生变量扩展。使用DATA参数在命令行上指定INFILE。

https://docs.oracle.com/cd/E11882_01/server.112/e22490/ldr_params.htm#SUTIL004