如何将BigQuery表数据复制到含REPEATED RECORD字段的目标表?
解决BigQuery表间重复记录字段的数据迁移问题
别担心,这个需求用BigQuery标准SQL的数组+结构体构造就能轻松搞定,我直接给你正确的写法和逻辑说明:
你需要把Table1里的parameter1、parameter2、parameter3三个字段打包成一个结构体(STRUCT),再把这个结构体放进**数组(ARRAY)**里,就能完美匹配Table2中parameters字段的REPEATED RECORD类型了。
完整的INSERT语句
INSERT INTO `your-project.your-dataset.Table2` ( id, name, created, valid, parameters ) SELECT id, name, created, valid, -- 将三个参数字段打包成单个STRUCT,再包裹为数组 ARRAY(STRUCT(parameter1, parameter2, parameter3)) AS parameters FROM `your-project.your-dataset.Table1`;
关键逻辑拆解
STRUCT(parameter1, parameter2, parameter3):会生成一个和Table2中parameters子结构完全匹配的结构体——因为字段名、类型都一一对应,BigQuery会自动完成映射;如果后续遇到字段名不匹配的情况,还可以显式指定别名,比如STRUCT(parameter1 AS param1, parameter2 AS param2, ...)。ARRAY(...):把单个结构体包装成数组,刚好满足REPEATED模式的要求。而且这个写法完全兼容未来的需求——以后要插入多条parameters数据时,只需要在数组里添加更多STRUCT即可,比如ARRAY(STRUCT(...), STRUCT(...))。
执行这条语句后,Table1的所有数据就能正确迁移到Table2里啦!
内容的提问来源于stack exchange,提问作者Tony B
相关产品推荐
相关产品推荐

