Google Bigquery BQ命令行从文件执行查询

时间:2015-10-29 23:26:42

标签: google-bigquery

我使用bq命令行工具来运行查询,e,g:bq查询“select * from table”,如果我将查询存储在文件中并从该文件运行查询怎么办?有没有办法做到这一点?

6 个答案:

答案 0 :(得分:3)

您可以使用一点shell魔术从文本文件中运行查询:

$ echo "SELECT 17" > qq.txt
$ bq query "$(cat qq.txt)"

Waiting on bqjob_r603d91b7e0435a0f_00000150c56689c6_1 ... (0s) Current status: DONE   
+-----+
| f0_ |
+-----+
|  17 |
+-----+

注意这适用于任何unix变体(包括mac)。如果您使用的是Windows,则应在powershell下运行,但不能使用默认的cmd提示符。

答案 1 :(得分:1)

还有另一种方式。

试试这个:

bq query --flagfile = [你的绝对路径文件]

例如:

bq query --flagfile=/home/user/abc.sql

答案 2 :(得分:0)

This线程提供了很好的解决方案

bq query `cat my_query.sql`

答案 3 :(得分:0)

其他答案似乎已经过时或过于脆弱。截至2019年,bq query从stdin读取,因此您可以将文件重定向到其中:

bq query < myfile.sql

查询参数是这样传递的:

bq query --parameter name:type:value < myfile.sql

答案 4 :(得分:0)

如果您使用的是标准sql(非旧版sql)。

**Steps:**

1. Create .sql file (you can you any extension).
2. Put your query in that. Make sure (;) at the end of the query.
3. Go to command line ad execute below commands.
4. If you want add parameter then you have to specify sequentially.

示例:

bq query --use_legacy_sql=False  "$(cat /home/airflow/projects/bql/query/test.sql)"

for parameter
bq query --use_legacy_sql=False  --parameter=country::USA  "$(cat /home/airflow/projects/bql/query/test.sql)"

cat >/home/airflow/projects/bql/query/test.sql
select * from l1_gcb_trxn.account where country=@country;

答案 5 :(得分:-1)

bq query --replace --use_legacy_sql=false --destination_table=syw-analytics:store_ranking.SHC_ENGAGEMENT_RANKING_TEST
"SELECT RED,
        DEC,
        REDEM
from `\syw.abc.xyz\`"