首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用go更新/覆盖而不是插入插入到bigquery中

使用go更新/覆盖而不是插入插入到bigquery中
EN

Stack Overflow用户
提问于 2021-07-21 14:09:36
回答 1查看 73关注 0票数 0

我有一个用Go编写的aws lambda,应该插入到bigquery中。它引用了cloud.google.com/go/bigquery包。

代码语言:javascript
复制
client, err := bigquery.NewClient(ctx, projectID, gcpOption)
if err != nil {
    println(fmt.Sprintf("error creating new client, %v", err))
    return fmt.Errorf("bigquery.NewClient: %v", err)
}
defer client.Close()

inserter := client.Dataset(datasetID).Table(tableID).Inserter()
if err := inserter.Put(ctx, items); err != nil {
    println(fmt.Sprintf("error inserting, %v", err))
    if multiError, ok := err.(bigquery.PutMultiError); ok {
        for _, err1 := range multiError {
            for _, err2 := range err1.Errors {
                fmt.Println(err2)
            }
        }
    } else {
        fmt.Println(err)
    }
    return err
} else {
    println("Inserted record")
}

运行时,将插入一条记录,但再次运行将导致更新先前插入的行。这不是我所期望的行为。我对Golang和GCP比较陌生,所以可能我有错误的期望?

大查询中的表未分区。Items是一个结构数组。

EN

回答 1

Stack Overflow用户

发布于 2021-07-21 14:33:56

Inserter可用于实现至少一次的数据插入语义。插入机制不能向上插入行为,这似乎是您所描述的。

我不清楚您是如何验证这种行为的,但我会从另一个角度出发。

有关作为go Inserter基础的tabledata.insertAll流应用编程接口的更多信息,可以在这里找到:https://cloud.google.com/bigquery/streaming-data-into-bigquery

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68464728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档