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

Ech*_* Li 5 google-bigquery

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

小智 7

还有另一种方法。

尝试这个:

bq query --flagfile=[your file with absolute path]
Run Code Online (Sandbox Code Playgroud)

前任:

bq query --flagfile=/home/user/abc.sql
Run Code Online (Sandbox Code Playgroud)

  • 它之所以有效是因为 `--flagfile` 试图提取任何看起来像标志的东西,并将其余部分传递给 `bq` 的标准输入。我不认为这会改变,但这有点奇怪。为什么不直接从文件中输入输入呢?`bq 查询 --use_legacy_sql=false < my_query.sql` (2认同)

Tho*_*mas 7

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

bq query < myfile.sql
Run Code Online (Sandbox Code Playgroud)

查询参数是这样传递的:

bq query --parameter name:type:value < myfile.sql
Run Code Online (Sandbox Code Playgroud)

  • 这正是我一直在寻找的。另外,提醒人们他们可能也想使用“--use_legacy_sql=false”。 (2认同)

Jor*_*ani 5

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

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

Waiting on bqjob_r603d91b7e0435a0f_00000150c56689c6_1 ... (0s) Current status: DONE   
+-----+
| f0_ |
+-----+
|  17 |
+-----+
Run Code Online (Sandbox Code Playgroud)

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