bigquery 命令行在单个 sql 文件中执行多个查询
Posted
技术标签:
【中文标题】bigquery 命令行在单个 sql 文件中执行多个查询【英文标题】:bigquery command line to execute multiple queries in a single sql file 【发布时间】: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 来执行您的查询。 【参考方案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
【讨论】:
以上是关于bigquery 命令行在单个 sql 文件中执行多个查询的主要内容,如果未能解决你的问题,请参考以下文章
通过命令行在 Visual Studio 中编译单个独立文件