我有一个连接到bigquery表的go程序。这是表的架构:
name STRING NULLABLE
age INTEGER NULLABLE
amount INTEGER NULLABLE
我已成功查询此表的数据并使用以下代码在控制台上打印了所有行:
ctx := context.Background()
client, err := bigquery.NewClient(ctx, projectID)
q := client.Query("SELECT * FROM test.test_user LIMIT 1000")
it, err := q.Read(ctx)
if err != nil {
log.Fatal(err)
}
for {
var values []bigquery.Value
err := it.Next(&values)
if err == iterator.Done {
break
}
if err != nil {
// TODO: Handle error.
}
fmt.Println(values)
}
我还成功使用以下代码从结构中的表上插入了数据:
type test struct {
Name string
Age int
Amount int
}
u := client.Dataset("testDS").Table("test_user").Uploader()
savers := []*bigquery.StructSaver{
{Struct: test{Name: "Jack", Age: 23, Amount:123}, InsertID: "id1"},
}
if err := u.Put(ctx, savers); err != nil {
log.Fatal(err)
}
fmt.Printf("rows inserted!!")
现在,我没能做的就是更新行。我想做的是选择所有行并用一个操作更新所有行(例如:amount = amount * 2)
如何使用golang做到这一点?