将 SQL 源文件与 bigquery cli 一起使用

Posted

技术标签:

【中文标题】将 SQL 源文件与 bigquery cli 一起使用【英文标题】:Using a SQL source file with the bigquery cli 【发布时间】:2012-09-07 18:13:35 【问题描述】:

是否可以在 bigquery CLI 中使用输入文件?

bq query < my_query.sql

【问题讨论】:

【参考方案1】:

如果您使用的是 unix(或在 windows 上安装了 cygwin),则可以使用 xargs:

xargs -a my_query.sql -0 bq query

您也可以使用反引号:

bq query `cat my_query.sql`

请注意,bq 一次只能处理一个命令——如果您的 .sql 脚本有多个查询,您需要将文件拆分到 ;

【讨论】:

@jordan 如果我有几个查询要传递怎么办?拆分文件是否意味着我需要拆分并将单独的文件(每个查询一个文件)传递给 BQ CLI? @Jordan Tigani 这是否记录在公共文档中?我似乎找不到使用 bq query 命令执行 .sql 文件的引用【参考方案2】:

我无法使用其他解决方案来处理非常长且复杂的查询,尤其是那些带有任何引号的查询。我更幸运地将文件传送到 bq 工具中

cat test.sql | bq query

【讨论】:

【参考方案3】:

在 Windows 上,我正在使用这种方法。 先决条件是将每个命令列在一行中。 这将使用 bq 逐一处理行中的每个命令。

C:\temp>for /F "tokens=*" %A in (batch_query.sql) do bq query %A

C:\temp>bq query select count+1 from cmdwh_bq_prod.newtable ;
Waiting on bqjob_r63bf8c82_00000163004c7fd0_1 ... (0s) Current status: DONE
+-------+
|  f0_  |
+-------+
| 20136 |
+-------+

C:\temp>bq query select count+2 from cmdwh_bq_prod.newtable ;
Waiting on bqjob_r7ffd9b2a_00000163004c9348_1 ... (0s) Current status: DONE
+-------+
|  f0_  |
+-------+
| 20137 |
+-------+

C:\temp>bq query select count+3 from cmdwh_bq_prod.newtable ;
Waiting on bqjob_r223c57a3_00000163004ca682_1 ... (0s) Current status: DONE
+-------+
|  f0_  |
+-------+
| 20138 |
+-------+

C:\temp>
C:\temp>type batch_query.sql
select count+1 from cmdwh_bq_prod.newtable ;
select count+2 from cmdwh_bq_prod.newtable ;
select count+3 from cmdwh_bq_prod.newtable ;

C:\temp>bq query select * from cmdwh_bq_prod.newtable
Waiting on bqjob_r3a363e1b_00000163004f4dba_1 ... (0s) Current status: DONE
+-------+
| count |
+-------+
| 20135 |
+-------+

C:\temp>

【讨论】:

只是为了添加到解决方案中,我遇到了同样的问题,即使对于查询分布在多行的文件,我也能够毫无问题地使用 type file.sql | bq query

以上是关于将 SQL 源文件与 bigquery cli 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

在 CLI 上使用 bq 从 BigQuery 标准 SQL 连接表中打印出漂亮的值表?

无法将 bigquery 与标准 sql 一起使用

谷歌 bigquery - 更新 sql?

将 BigQuery SQL 与内置 Python 函数结合使用

尝试使用带有反斜杠作为转义字符的Google Bigquery CLI导入CSV时出错

将 csv 文件从云存储批量加载到 bigquery