UNIXスクリプトからSQLファイルにパラメータを渡すことを検討しています。残念ながらそれに問題があります。UNIXスクリプトからSQLファイルにパラメータを渡す方法は?
以下のUNIXスクリプトを参照してください:私のUNIXスクリプトを実行しているとき、私は受け付けており、エラーがある
SELECT DISTINCT v1.*
FROM data_latest v1
JOIN temp_table t
ON v1.number = t.id
WHERE v1.code = '&1'
:
INGRES TERMINAL MONITOR Copyright 2008 Ingres Corporation
E_US0022 Either the flag format or one of the flags is incorrect,
or the parameters are not in proper order.
#!/bin/ksh
############
# Functions
_usage() {
SCRIPT_NAME=XXX
-eq 1 -o "$1" = "" -o "$1" = help -o "$1" = Help -o "$1" = HELP ]; then
echo "Usage: $SCRIPT_NAME [ cCode ]"
echo " - For example : $SCRIPT_NAME GH\n"
exit 1
fi
}
_initialise() {
cCode=$1
echo $cCode
}
# Set Variables
_usage [email protected]
_initialise $1
# Main Processing
sql $DBNAME < test.sql $cCode > $PVNUM_LOGFILE
RETCODE=$?
# Check for errors within log file
if [[ $RETCODE != 0 ]] || grep 'E_' $PVNUM_LOGFILE
then
echo "Error - 50 - running test.sql. Please see $PVNUM_LOGFILE"
exit 50
fi
は、SQLスクリプト(test.sql内)を参照してください
誰でも私が間違っていることを知っていますか?
ありがとうございます!
のように、スクリプト自体にSQLでコーディングする傾向がありますエラーメッセージ-E-US0022) – mathB
@mathBリダイレクトシンボル( "<")がSQL行で使用されています。次の「sql $ DBNAME $ PVNUM_LOGFILE」を参照してください。それが問題なのかどうかわからないのですか? –
TCP
私はエラーに慣れていません、正しい形式でパラメータを渡していますか? 'sed '/ VaLuE/$ cCode /'/'を実行する前に、' test.sql'というSQLファイルで ''&1''を' 'VaLuE''に変更してからsqlを実行してください。 full/path/to/test.sql'を実行し、メインプロセスで '$ cCode'を削除してSQLファイルをそのまま送ります。 – mathB