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 回答