2011-09-12 68 views
1

我有一個shell腳本,使用此代碼:SQLLDR LRM-00112:多個值不允許參數 '控制'

sqlldr $ws_usr_eva/[email protected]$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 

變量$ ws_usr_eva,$ ws_pass_eva和$ ws_esq_eva在灌裝前我執行SQLLDR 。我已經檢查了內容並確認。

所以,當我運行該腳本,它告訴我:LRM-00112:多個值不允許參數「控制」

我試圖不變量運行腳本,並能正常工作:

sqlldr user/[email protected] 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 

我必須在sqlldr中使用變量,因爲它從配置文件中讀取它們。

我也嘗試使用sqlldr userid = $ ws_usr_eva/$ ws_pass_eva @ $ ws_esq_eva ...但它沒有奏效。

你能幫我嗎?

在此先感謝。

+0

我意識到變量的連接會替換字符,如下所示:ABCDEFG/HIJK @ KLM返回KLMKEFG。我怎樣才能以正確的方式連接變量? – user686400

回答

0

在您的外殼,試圖逃跑的變量::

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" 
1

櫃面它可以幫助別人,你需要附上路徑(數據,控制,日誌)單qoutes。雙qoutes將不起作用(儘管sqlldr不會抱怨,而是簡單地忽略雙qoutes)。

相關問題