BigQuery 命令行工具 - 使用查询附加到表
Posted
技术标签:
【中文标题】BigQuery 命令行工具 - 使用查询附加到表【英文标题】:BigQuery command line tool - append to table using query 【发布时间】:2015-06-19 04:52:09 【问题描述】:是否可以使用 bq 命令行工具将运行查询的结果附加到表中?我看不到可用于指定它的标志,当我运行它时它失败并声明“表已存在”
bq query --allow_large_results --destination_table=project:DATASET.table "SELECT * FROM [project:DATASET.another_table]"
查询操作中的 BigQuery 错误:错误处理作业“”: 已经存在:表项目:DATASET.table
【问题讨论】:
【参考方案1】:原来 BigQuery 不支持标准的 SQL 习惯用法
INSERT foo SELECT a,b,c from bar where d>0;
你必须按照他们的方式使用--append_table
但根据@Will 的回答,现在可以了。
原来有bq,有
bq query --append_table ...
bq查询命令的帮助是
$ bq query --help
并且输出在输出的前 25% 中显示了一个 append_table 选项。
Python script for interacting with BigQuery.
USAGE: bq.py [--global_flags] <command> [--command_flags] [args]
query Execute a query.
Examples:
bq query 'select count(*) from publicdata:samples.shakespeare'
Usage:
query <sql_query>
Flags for query:
/home/paul/google-cloud-sdk/platform/bq/bq.py:
--[no]allow_large_results: Enables larger destination table sizes.
--[no]append_table: When a destination table is specified, whether or not to
append.
(default: 'false')
--[no]batch: Whether to run the query in batch mode.
(default: 'false')
--destination_table: Name of destination table for query results.
(default: '')
...
您最好使用UNION ALL
,而不是将两个表附加在一起,这是sql 的连接版本。
在大查询中,两个表之间的逗号或,
操作如SELECT something from tableA, tableB
是UNION ALL
,而不是JOIN
,或者至少这是我最后一次查看。
【讨论】:
【参考方案2】:以防万一有人最终在 Google 中找到这个问题,BigQuery 自从这篇文章以来已经发展了很多,现在它可以support Standard。
如果您想使用标准版的DML syntax 功能将查询结果附加到表中,您可以执行以下操作:
INSERT dataset.Warehouse (warehouse, state)
SELECT *
FROM UNNEST([('warehouse #1', 'WA'),
('warehouse #2', 'CA'),
('warehouse #3', 'WA')])
如docs 中所述。
对于命令行工具,它遵循相同的想法,您只需添加标志--use_legacy_sql=False
,如下所示:
bq query --use_legacy_sql=False "insert into dataset.table (field1, field2) select field1, field2 from table"
【讨论】:
【参考方案3】:根据当前文档(2018 年 3 月):https://cloud.google.com/bigquery/docs/loading-data-local#appending_to_or_overwriting_a_table_using_a_local_file
你应该添加:
--noreplace
或 --replace=false
【讨论】:
以上是关于BigQuery 命令行工具 - 使用查询附加到表的主要内容,如果未能解决你的问题,请参考以下文章
使用云功能将数据加载到大查询表中,它是附加到表中的,我需要它来替换