首頁 > 後端開發 > Golang > BQ 插入記錄類型成功,未插入數據

BQ 插入記錄類型成功,未插入數據

PHPz
發布: 2024-02-09 15:40:18
轉載
1141 人瀏覽過

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
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板