在没有明确定义的结构的情况下插入BigQuery

时间:2019-05-02 11:48:43

标签: go google-bigquery

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

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

谢谢

1 个答案:

答案 0 :(得分:2)

似乎已将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)