go - Bigquery 实体标签
问题描述
当我将数据从 Cloud Storage 加载到 Bigquery 时,该click_url
字段在创建时变成了Record
类型,即使它是一个字符串(可能是因为noindex
不确定)。当我尝试使用Inserter
. 我收到此错误消息:
无法将 std::string 转换为记录字段:可选 .Msg_0_CLOUD_QUERY_TABLE.Msg_1_CLOUD_QUERY_TABLE_click_url click_url = 1
大查询中的表:
架构:
这是代码:
type Product struct {
Name string `datastore:"name" bigquery:"name"`
ClickUrl string `datastore:"click_url,noindex" bigquery:"click_url"`
DateAdded time.Time `datastore:"date_added" bigquery:"date_added"`
}
func insertRows(data interface{}) error {
projectID := "my-project-id"
datasetID := "mydataset"
tableID := "mytable"
ctx := context.Background()
client, err := bigquery.NewClient(ctx, projectID)
if err != nil {
return fmt.Errorf("bigquery.NewClient: %v", err)
}
defer client.Close()
inserter := client.Dataset(datasetID).Table(tableID).Inserter()
if err := inserter.Put(ctx, data); err != nil {
return err
}
return nil
}
func main() {
product := Product{"product_name", "click_url", "date_added_value"} // Example data from datastore
if err := insertRows(product); err != nil {
fmt.Println(err)
}
}
我应该在实体标签上放什么"bigquery:click_url"
才能使这项工作?
解决方案
因为 BigQuery 中的 ClickUrl 是 STRUCT 类型,具有键值对。
也许试试这个?
type Product struct {
Name string `datastore:"name" bigquery:"name"`
ClickUrl struct {
String string
Text string
Provided string
} `datastore:"click_url,noindex" bigquery:"click_url"`
DateAdded time.Time `datastore:"date_added" bigquery:"date_added"`
}
推荐阅读
- java - 为什么我的数组得到排序?
- java - Spring Boot 连接到 localhost 数据库
- javascript - 在Angular 5中将带有geojson图层的传单地图导出为png
- javascript - If 和 Return 语句的问题
- php - PHP计算直到指定日期的天数加上直到一周中的指定日期的天数
- php - PHP Simple Dom Parser - 从 SPAN 中获取价值
- vba - VBA:搜索包
- php - 如何检查我是否已连接到我的数据库?
- python - tkinter 窗口没有关闭
- jquery - 如何使用 JQuery 将按钮值从部分视图传递到父视图?