我试图将shell命令行参数传递到我在BigQuery中执行的SQL文件中。我一直得到这个错误,并且不知道如何解决它:
第一个月
下面是我正在执行的shell脚本(install.sh
):
do
case "${flag}" in
p) project=${OPTARG};;
d) dataset=${OPTARG};;
esac
done
echo $project
echo $dataset
gcloud config set project $project
bq query --flagfile=./test/ddl_table.sql
字符串
下面是ddl_table.sql
文件:
CREATE TABLE $dataset.my_table (
metric_sk INT64,
metric_identifier STRING ,
metric_name STRING ,
metric_def STRING ,
metric_type_id INT64
);
型
下面是我用来执行.sh文件的命令:
./install.sh -p 'my_project' -d 'my_dataset'
型echo
命令反映参数已正确设置,但是SQL文件中对$dataset
的引用似乎有问题。第1行第14列的字符(如错误消息所示)是$
字符。所以看起来BigQuery不能将其识别为参数。我不知道如何解决这个问题。我希望数据集名称为由从命令行传入的参数确定。
1条答案
按热度按时间xiozqbni1#
基于Google Cloud的Running parameterized queries文档:
参数不能替代标识符、列名、表名或查询的其他部分。
据我所知,你可以在基本的SQL查询中使用参数,比如SELECT语句或条件WHERE语句,但不能用于创建表。