是否可以使用bq命令行工具将运行查询的结果附加到表中?我无法看到可用于指定此标志的标志,当我运行它时它会失败并且状态"表已经存在"
UIRequiresFullScreen
查询操作中的BigQuery错误:处理作业时出错'': 已经存在:表项目:DATASET.table
答案 0 :(得分:8)
最初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
,或者至少这是我最后一次看着。
答案 1 :(得分:6)
万一有人最终在谷歌发现了这个问题,自从这篇文章以来,BigQuery已经发展了很多,现在它已经support Standard。
如果您想使用标准版的DML syntax功能将查询结果附加到表中,您可以执行以下操作:
create view THE_BEST
as
select top (select count(*)
from (select max(total_price) as MaxPrice
from (select sum(PRICE) as total_price
from COMMAND) COMMAND) COMMAND)*
from COMMANDLINE
order by ID_LINE asc
如docs中所述。
对于命令行工具,它遵循相同的想法,您只需要添加标记ID_COMMAND
,如下所示:
INSERT dataset.Warehouse (warehouse, state)
SELECT *
FROM UNNEST([('warehouse #1', 'WA'),
('warehouse #2', 'CA'),
('warehouse #3', 'WA')])
答案 2 :(得分:0)
根据当前文件(2018年3月):https://cloud.google.com/bigquery/docs/loading-data-local#appending_to_or_overwriting_a_table_using_a_local_file
你应该添加:
--noreplace
或--replace=false