BigQuery中DML语句任务无法设置目标表问题及表合并需求
解决BigQuery合并表的两个问题
一、解决DML语句无法设置目标表的错误
你碰到的这个错误逻辑很直接:INSERT INTO本身就是用来指定写入目标表的DML语句,而查询设置里的“为查询结果设置目标表”是给普通SELECT查询用的,两者同时用就会冲突。
正确操作是:直接写完整的INSERT INTO + UNION ALL语句执行,绝对不要在查询设置里勾选“设置目标表”。
给你个示例代码,照着替换成自己的项目、数据集和表名就行:
INSERT INTO `my-project.my-dataset.main_table` SELECT * FROM `my-project.my-dataset.table_01` UNION ALL SELECT * FROM `my-project.my-dataset.table_02` -- 把剩下10张表的SELECT语句依次加在这里
⚠️ 注意:所有要合并的表必须和主表结构完全一致(字段名、数据类型、顺序都得匹配),不然会插入失败。如果结构有差异,就手动指定字段,比如:
INSERT INTO `my-project.my-dataset.main_table` (id, name, create_time) SELECT id, name, create_time FROM `my-project.my-dataset.table_01` UNION ALL SELECT id, name, create_time FROM `my-project.my-dataset.table_02`
二、不用写SQL的表合并方法
作为SQL新手,BigQuery有可视化操作能帮你搞定:
方法1:用“创建表”功能自动生成合并逻辑
- 打开BigQuery控制台,进入你要操作的数据集
- 点击“创建表”,数据源选“从多个表”
- 逐个添加要合并的12张表,合并方式选“UNION ALL”
- 目标栏设置表名(如果要合并到已有的主表,你可以先创建新合并表,再把数据导入主表,或者直接把主表设为目标)
- 点“创建”,BigQuery会自动帮你生成并执行合并查询,不用写一行SQL
方法2:用Data Prep可视化工具合并
- 在BigQuery左侧菜单打开“Data Prep”
- 新建数据流,把所有要合并的表都加为数据源
- 把这些表拖到画布上,选“合并”操作,设置成UNION ALL
- 把合并后的结果输出到你的主表
- 运行数据流就完成了,全程都是点鼠标操作
内容的提问来源于stack exchange,提问作者Nathan Lopez
相关产品推荐
相关产品推荐

