【问题标题】:Insert into BigQuery without a well defined struct在没有明确定义的结构的情况下插入 BigQuery
【发布时间】:2019-05-02 11:48:43
【问题描述】:

我想将任何类型的 JSON 直接插入 BigQuery,但没有找到任何好的方法?所有方法都假设我有一个定义明确的结构,我插入。似乎可以使用旧的已弃用 api,但不能使用新的“cloud.google.com/go/bigquery”包。

我希望 /api/table_name/insert 能够采用任何类型的 json 并将其插入 BigQuery,因为客户端和服务器都知道端点应该转发它的架构。

谢谢

【问题讨论】:

  • BigQuery 不是“no-sql”数据库,它需要架构。因此,“我想将任何类型的 JSON 直接插入 BigQuery” 将无法工作,而无需先定义架构。但是,如果你已经有一个模式,你可以有一个匹配的结构。
  • 我定义了一个模式,并且一个方法会根据需要动态创建更多模式,但是我不想每次添加新模式时都用新结构重新编译 go 代码

标签: go google-bigquery


【解决方案1】:

似乎这已被 ValueSaver 取代,您可以像这样实现:

type genericRecord map[string]bigquery.Value

func (rec genericRecord) Save() (map[string]bigquery.Value, string, error) {
    insertID := uuid.New().String()
    return rec, insertID, nil
}

var data []*genericRecord
json.Unmarshal(<YOUR JSON BYTE>, &data)

ctx := context.Background()
client, err := bigquery.NewClient(ctx, <YOUR PROJECT ID>)
ins := client.Dataset(<DATASET>).Table(<TABLE>).Inserter()
ins.Put(ctx, data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2016-11-30
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多