oracle sqlldr LRM-00112:参数“control”不允许有多个值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7391065/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
sqlldr LRM-00112: multiple values not allowed for parameter 'control'
提问by user686400
I have a shell script with this code:
我有一个带有此代码的 shell 脚本:
sqlldr $ws_usr_eva/$ws_pass_eva@$ws_esq_eva CONTROL=/$HOME/controlfiles/CONTROL_FILE.CTL LOG=/$HOME/batch/log/LOG_FILE.$fecfile.log DATA=/$HOME/batch/input/INPUT_FILE_$fecfile.txt > /$HOME/batch/log/result_loader_eva.ora
The variables $ws_usr_eva, $ws_pass_eva and $ws_esq_eva are filled before I execute the sqlldr. I already check the content and its ok.
变量 $ws_usr_eva、$ws_pass_eva 和 $ws_esq_eva 在我执行 sqlldr 之前被填充。我已经检查了内容,没问题。
So when I run the script, it show me: LRM-00112: multiple values not allowed for parameter 'control'
因此,当我运行脚本时,它向我显示:LRM-00112:参数“控制”不允许使用多个值
I tried to run the script without the variables, and it works fine:
我试图在没有变量的情况下运行脚本,它工作正常:
sqlldr user/pwd@schema CONTROL=/$HOME/controlfiles/CONTROL_FILE.CTL LOG=/$HOME/batch/log/LOG_FILE.$fecfile.log DATA=/$HOME/batch/input/INPUT_FILE_$fecfile.txt > /$HOME/batch/log/result_loader_eva.ora
I have to use variables in the sqlldr, because it reads them from a configuration file.
我必须在 sqlldr 中使用变量,因为它从配置文件中读取它们。
I also try with sqlldr userid=$ws_usr_eva/$ws_pass_eva@$ws_esq_eva ... but it didn't work.
我也尝试使用 sqlldr userid=$ws_usr_eva/$ws_pass_eva@$ws_esq_eva ...但它没有用。
Can you help me?
你能帮助我吗?
Thanks in advance.
提前致谢。
回答by n00b
Incase it helps anybody, you need to enclose your paths (data, control, log) in single qoutes. Double qoutes will not work (although sqlldr will not complain, but rather simply ignore the double qoutes).
如果它可以帮助任何人,您需要将您的路径(数据、控制、日志)包含在单个 qoutes 中。双 qoutes 将不起作用(尽管 sqlldr 不会抱怨,而只是忽略双 qoutes)。
回答by Benoit
In your shell, try to escape your variables::
在您的 shell 中,尝试转义您的变量::
sqlldr "${ws_usr_eva}/${ws_pass_eva}@${ws_esq_eva}" "CONTROL=${HOME}/controlfiles/CONTROL_FILE.CTL" "LOG=${HOME}/batch/log/LOG_FILE.${fecfile}.log" "DATA=${HOME}/batch/input/INPUT_FILE_${fecfile}.txt" > "${HOME}/batch/log/result_loader_eva.ora"