【问题标题】:BigQuery Insert into Nested recordsBigQuery 插入嵌套记录
【发布时间】:2021-02-02 04:03:09
【问题描述】:

我有一个包含嵌套记录的表(请参阅附加快照)。

我正在尝试做一个简单的插入,但它不起作用。

INSERT  INTO `my_project.my_dataset.test_table`(name,address,comments)
values( 
'my_name' as name,
  [STRUCT('ABC' as line1,'XYZ' as line2,10 as code),
   STRUCT('PQR' as line1,'STU' as line2,20 as code)],
   'Comment') 

知道这条 SQL 插入语句有什么问题吗?

非常感谢您的帮助。

【问题讨论】:

    标签: sql struct google-bigquery insert nested-table


    【解决方案1】:

    不要在values 中指定名称。试试:

    INSERT  INTO `my_project.my_dataset.test_table`(name,address,comments)
        values('my_name',
               [STRUCT('ABC' as line1,'XYZ' as line2,10 as code),
                STRUCT('PQR' as line1,'STU' as line2,20 as code)],
               'Comment'
              ) 
    

    或使用insert . . . select:

    insert into `my_project.my_dataset.test_table`(name,address,comments)
        select 'my_name' as name,
               [STRUCT('ABC' as line1,'XYZ' as line2,10 as code),
                STRUCT('PQR' as line1,'STU' as line2,20 as code)],
               'Comment';
    

    【讨论】:

    • 它没有用。我收到以下错误Query column 2 has type ARRAY<STRUCT<line1 STRING, line2 STRING, code INT64>> which cannot be inserted into column address, which has type STRUCT<line1 STRING, line2 STRING, code INT64> at [95:5]:
    • 我的理解是我们正在插入一个结构数组,但 BigQuery 似乎有不同的想法。在上述两种情况下,BigQuery 都会出错,但是,select 语句中的嵌套记录正是我所追求的。
    • @Dinesh。 . .我错过了。您需要记录REPEATABLE。现在,它不包含数组。
    • 非常感谢@Gordon Linoff,解决了这个问题
    【解决方案2】:

    考虑将address 模式更改为REPEATED

    还需要删除as name

    INSERT  INTO `my_project.my_dataset.test_table`(name, address, comments)
    values('my_name',
           [STRUCT('ABC','XYZ',10), STRUCT('PQR','STU',20)],
           'Comment'
          )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2021-10-01
      • 1970-01-01
      相关资源
      最近更新 更多