【问题标题】:将 BQ 一个嵌套表插入到另一个不同的嵌套表中
【发布时间】:2022-01-23 13:10:14
【问题描述】:

我正在尝试将一个嵌套 BigQuery 表复制到另一个嵌套表中,并遇到以下错误 Query column 2 has type ARRAY> 不能插入到列请求中,它有type STRUCT

查询:

INSERT INTO `<GCP_PROJECT_NAME>.Test_Tables.Nested_Person_Table2` 
  (cinema,
  director.movie.Name,
  director.movie.Budget)
SELECT
  cinema,
  movie.Name,
  movie.Budget
FROM
`<GCP_PROJECT_NAME>.Dataset.Table`

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    您不能插入部分结构。您需要在 BigQuery 表中提供完整的结构(将来会使用新的 JSON 友好引擎进行更改)

    INSERT INTO `<GCP_PROJECT_NAME>.Test_Tables.Nested_Person_Table2` 
      (cinema,
      director)
    SELECT
      cinema,
      STRUCT(movie as director)
    FROM
    `<GCP_PROJECT_NAME>.Dataset.Table`
    

    EDIT1

    您不能插入部分数据。您需要在每一行中插入完整的对象

    
    INSERT INTO `<GCP_PROJECT_NAME>.Test_Tables.Nested_Person_Table2` 
      (cinema,
      director)
    SELECT
      cinema,
      STRUCT([STRUCT(mo.Name as Name, mo.Budget as Budget)] as movie, "" as language, "" as English, "" as other, STRUCT("","") as source) as director
    FROM
    `<GCP_PROJECT_NAME>.Dataset.Table`, UNNEST(movie) as mo
    
    

    PS:语言不应该是您的目标表中的记录,其中包含英语和其他内容?

    【讨论】:

    • 它不工作。再次抛出同样的错误
    • 你能分享两个表的架构吗?我在虚拟桌子上进行了测试,并且成功了。
    • 我已在问题中添加。请看一次
    • 更新了我的答案,使用架构更容易,更相关!!告诉我
    • 优秀..它的工作。谢谢
    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2021-06-08
    • 2019-10-28
    • 1970-01-01
    • 2023-03-12
    • 2022-01-20
    相关资源
    最近更新 更多