通过shell脚本中的命令行参数将参数传递到sql文件



我正在使用SnowSQL运行SQL脚本。我有一些命令行参数,这些参数也需要在我的SnowSQL调用过程中传递给SQL脚本。这是我所拥有的:

SQL脚本(file.SQL(:

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

Shell脚本(run.sh(:

snowsql -c credentials -f file.sql

我用以下命令在我的终端中运行这个:

sh run.sh 123 555

这不起作用-我如何修复它以正确地将参数传递到SQL文件?

#!/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或可变连接参数(

要在连接到Snowflake时定义变量,请在终端命令行上指定-D或--variable连接参数,后跟变量名称和值,格式为<变量名称><variable_value>。

例如:

Linux/macOS

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

Windows

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

尝试将脚本file.sql更改为:

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

CCD_ 2应为:

snowsql -c credentials --variable cli_id=$1 --variable store_id=$2  -f file.sql

最新更新