BigQuery如何将shell命令行参数传递给sql文件

deyfvvtc  于 7个月前  发布在  Shell
关注(0)|答案(1)|浏览(56)

我试图将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不能将其识别为参数。我不知道如何解决这个问题。我希望数据集名称为由从命令行传入的参数确定。

xiozqbni

xiozqbni1#

基于Google Cloud的Running parameterized queries文档:
参数不能替代标识符、列名、表名或查询的其他部分。
据我所知,你可以在基本的SQL查询中使用参数,比如SELECT语句或条件WHERE语句,但不能用于创建表。

相关问题