我正在尝试使用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%肯定如何解决这个问题?
我也可能在可执行文件中做错了。
有什么建议吗?
谢谢!
答案 0 :(得分:0)
控制文件中不会发生变量扩展。使用DATA参数在命令行上指定INFILE。
https://docs.oracle.com/cd/E11882_01/server.112/e22490/ldr_params.htm#SUTIL004