Как обновить строку bigquery в golang - PullRequest
0 голосов
/ 25 июня 2018

У меня есть программа 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!!")

Теперь я не могу обновить строки.Что я хочу сделать, это выбрать все строки и обновить все их с помощью операции (например: сумма = сумма * 2)

Как я могу добиться этого с помощью golang?

1 Ответ

0 голосов
/ 25 июня 2018

Обновление строк не является специфическим для Go или любой другой клиентской библиотеки.Если вы хотите обновить данные в BigQuery, вам нужно использовать DML (язык манипулирования данными) через SQL.Итак, по сути, у вас уже есть основная часть, работающая (выполняющая запрос) - вам просто нужно изменить этот SQL для использования DML.

Но, предостережение: BigQuery - это сервис OLAP.Не используйте его для OLTP.Также есть квоты с использованием DML.Обязательно ознакомьтесь с ними.

...