【问题标题】:bigquery command line to execute multiple queries in a single sql filebigquery 命令行在单个 sql 文件中执行多个查询
【发布时间】:2019-07-26 08:49:32
【问题描述】:

有没有一种方法可以使用 bq 命令行在单个 sql 文件中执行多个多行查询?

我尝试了单行查询,成功了,但是当我尝试多行查询时,它返回一个错误。

test_query1.sql
==================
select 1+2;
select 3+4;
==================

command:
for /f "tokens=*" %A in (C://test/test_query1.sql) do bq query --use_legacy_sql=false %A

这会分别运行 2 个查询。

但如果我有这个:

test_query1.sql
==================
select variable
from table1;

select var
from table2;
==================

command:
for /f "tokens=*" %A in (C://test/test_query1.sql) do bq query --use_legacy_sql=false %A

这只会运行“选择变量”然后返回错误。然后它运行“from table1”并返回错误等等。我如何确保它读取整个脚本,直到“;” ?

【问题讨论】:

  • 执行 test_query1 时遇到什么错误?
  • 抱歉第一行会返回成功。但是第 2 和第 3 行返回错误。它将仅处理“select var”并返回此错误:..\Google\Cloud SDK>bq query --use_legacy_sql=false Select var 查询字符串中的错误:错误处理作业 'ds-00-191017:bqjob_r6b1709be6304a11b_0000016c2d8888ca_1': Unrecognized name: var at [1:8] 然后它处理“from table2”并返回相同的错误。
  • 这是可行的,但我不建议将不同的 SQL 语句放在一个 SQL 文件中。将它们分开以便于维护和调试目的。为每个使用/业务案例命名文件并将其置于源代码控制中。此外,请考虑使用 Cloud Build 来执行您的查询。

标签: google-bigquery


【解决方案1】:

使用 BigQuery scripting(现在是 Beta 版),您只需使用一个命令即可运行整个 .sql 文件:

test_query1.sql
==================
select variable
from table1;

select var
from table2;
==================
Command:
bq query --use_legacy_sql=false < test_query1.sql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2015-11-02
    • 2021-03-13
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多