2013-06-12 74 views
0

我正在編寫一個KSH腳本來接受一個.sql文件參數,接着是要編譯的每個模式。腳本假定.sql文件是一個DB2 9.7過程。從KSH腳本編譯DB2過程

我相信我停留在終止字符的db2命令的語法。我們總是使用at符號('@'),但是以下代碼段失敗,錯誤爲「DB21001E」'db2'命令或DB2OPTIONS變量中指定的選項「 - @」不正確。任何援助將不勝感激。

#!/bin/ksh 
. $IBM_DB_DIR/db2profile 
db2 connect to dwdev3 
const_compil_string_suffix="[email protected] -f ../../stored_procedures/" 
script_name="ETL.THING.sql" 
db2 "$const_compil_string_suffix$script_name" 
db2 terminate 

我已經證實,上面的「終止」生成的字符串命令不工作在Linux提示符編譯如預期的過程: DB2 -vtd @ -f ../../stored_procedures/ETL.THING。 sql

預先感謝您。

回答

1

嘗試失去了引號:

db2 ${const_compil_string_suffix}${script_name} 
+1

mustaccio - 你是完全正確的。謝謝,只是刪除那些引用完美的作品。對不起,我問了一個很容易解決的問題 - 我應該事先做過測試。 – CupOfTea

0

我懷疑選項字符串[email protected]可能是罪魁禍首。

當使用單個字符選項時,大多數unix命令都接受兩種類型的選項,那些選項和那些不帶參數的選項。

顯然@字符正在作爲選項參數進行處理,但是錯誤消息表明它被視爲一個選項。

嘗試分離選項,如:-v -t [email protected],對它們重新排序。或者刪除-t-v選項之一。

雖然小心。我不知道db2 cli。試驗需要您自擔風險。

稍後添加了-t選項嗎?

+1

組合'-vtd @'完全有效。沒有'-t','-d @'是無效的。問題在於命令行解析 - 當您引用選項時,如'db2「-vtd @ ...」'DB2 CLI很難弄清楚什麼是。 – mustaccio

+0

Henk Langeveld - 感謝您的建議。如同mustaccio所說,IBM的DB2對輸入參數比較挑剔,所使用的語法是有效的,只是雙引號的包裝不是。 – CupOfTea