0

SnowSQL を使用して SQL スクリプトを実行しています。SnowSQL 呼び出し中に SQL スクリプトにも渡す必要があるコマンド ライン パラメーターがあります。ここに私が持っているものがあります:

SQL スクリプト (file.sql):

select * from table where cli_id = '$1' and store_id = '$2'; 

シェル スクリプト (run.sh):

snowsql -c credentials -f file.sql

次のコマンドを使用して、ターミナルでこれを実行します。

sh run.sh 123 555

これは機能していません。パラメーターを SQL ファイルに正しく渡すにはどうすればよいですか?

4

2 に答える 2

0
#!/usr/bin/env bash
snowsql -c credentials -D COLOR="$1" -D SIZE="$2" -f file.sql

また、SQL ファイルでは次のようになります。

SELECT id, name, description IN articles WHERE colour=&COLOR AND size=&SIZE;

参照: SnowSQL の使用 — Snowflake ドキュメント / 変数の使用 / 接続中の定義

接続中の定義 (-D または --variable 接続パラメーター)

Snowflake への接続中に変数を定義するには、ターミナル コマンド ラインで -D または --variable 接続パラメーターを指定し、その後に変数名と値を <variable_name>=<variable_value> の形式で指定します。

例えば:

Linux/macOS

$ snowsql ... -D tablename=CENUSTRACKONE --variable db_key=$DB_KEY

ウィンドウズ

$ snowsql ... -D tablename=CENUSTRACKONE --variable db_key=%DB_KEY%
于 2020-10-08T17:10:20.283 に答える
0

スクリプトfile.sqlを次のように変更してみてください。

select * from table where cli_id = '&cli_id' and store_id = '&store_id'; 

..そして次のようにrun.shする必要があります:

snowsql -c credentials --variable cli_id=$1 --variable store_id=$2  -f file.sql
于 2020-10-08T17:10:31.353 に答える