首页 > 后端开发 > Golang > 正文

BQ 插入记录类型成功,未插入数据

PHPz
发布: 2024-02-09 15:40:18
转载
1110 人浏览过

BQ 插入记录类型成功,未插入数据

php小编香蕉向大家介绍一种常见的数据库操作问题,即在BQ数据库中插入记录类型成功却未插入实际数据的情况。这种情况可能会导致数据不一致,因此我们需要找出原因并解决该问题。在下文中,我们将详细介绍可能的原因和解决方案,以帮助读者更好地处理这个问题。

问题内容

我正在尝试按照以下示例将数据插入 bigquery 与给定示例相比,带有预先创建的表格的文本。 我的代码如下

type tagInfo struct {
    proj_name string `bigquery:"proj_name"`
    Tags      Tags   `bigquery:"tags"`
}
type Tags struct {
    key    string `bigquery:"key"`
    values string `bigquery:"values"`
}
func insertData() error {
    prjName := "prjName"
    datasetID := "DSName"
    tableID := "TName"

    ctx := context.Background()
    client, err := bigquery.NewClient(ctx, prjName)
    if err != nil {
        return fmt.Errorf("Bigquery.NewClient: %w", err)
    }
    defer client.Close()

    item := &tagInfo{
        proj_name: "Devil",
        Tags: Tags{
            key:    "engcontact",
            values: "Meryl Streep",
        },
    }
    fmt.Printf("Item is: %s", item)
    items := []*tagInfo{item}

    table := client.Dataset(datasetID).Table(tableID)
    inserter := table.Inserter()
    err = inserter.Put(ctx, items)

    if err != nil {
        if multiErr, ok := err.(bigquery.PutMultiError); ok {
            for _, putErr := range multiErr {
                fmt.Printf("failed to insert row %d with err: %v \n", putErr.RowIndex, putErr.Error())
                fmt.Println(putErr.Errors)
            }
        }
        return err
    }
    return nil
}
登录后复制

代码运行成功,但我没有看到插入任何记录。 表结构如下

字段名称 类型 mod 键排序规则 默认值 策略标签

proj_name string nullable

标签。记录可为空

钥匙。字符串可为空 价值观。字符串可为空

不知道哪里出了问题,如果有人可以提供指导,非常感谢。

tia 斯里坎斯

期望记录成功插入表中。

解决方法

应导出字段。此类问题被报告太多次:

type taginfo struct {
    projname string `bigquery:"proj_name"`
    tags     tags   `bigquery:"tags"`
}
type tags struct {
    key    string `bigquery:"key"`
    values string `bigquery:"values"`
}
登录后复制

请参阅文档 (*inserter).put< /a>:

...

如果 src 是 valuesaver,则调用其 save 方法来生成一行用于上传。

如果 src 是结构体或指向结构体的指针,则会从中推断出架构并用于创建 structsaver。 structsaver 的 insertid 将为空。

...

这是对

// inferFields extracts all exported field types from struct type.
func inferFields(rt reflect.Type) (Schema, error) {

以上是BQ 插入记录类型成功,未插入数据的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板