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

问题描述 投票:0回答:1

我正在尝试将 shell 命令行参数传递到我在 BigQuery 中执行的 SQL 文件中。我不断收到此错误,但不知道如何解决它:

Unexpected macro at [1:14]

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

shell google-bigquery parameter-passing
1个回答
0
投票

基于 Google Cloud 的运行参数化查询文档:

参数不能用作标识符、列名、表名或查询的其他部分的替代。

据我了解,您可以在基本 SQL 查询中使用参数,例如 SELECT 语句或条件 WHERE 语句,但不能用于创建表。

© www.soinside.com 2019 - 2024. All rights reserved.