我使用bq命令行工具来运行查询,e,g:bq查询“select * from table”,如果我将查询存储在文件中并从该文件运行查询怎么办?有没有办法做到这一点?
答案 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\`"