如何访问bigquery表中列内的数据数组的列名?

时间:2019-06-01 00:22:31

标签: sql go google-bigquery

我有一个结构,其中包含一个类对象数组,这些对象是使用推理模式上载到bigquery表中的。但是,我现在试图遍历该表并相应地更新值,而我无法访问保存类对象数组的列。

我已经尝试使用不同的类名称(例如“ Reviewers [0] .Role”,“ Reviewers[0].Role”,“ Reviewers_0.Role”,“ Reviewers(0).Role”)访问它。其中有效

//Models which I'm using for the schema of the tables
type PullRequest struct {   
Reviewers         []*Reviewer  `json:"reviewers"`
}
type Reviewer struct {
    Role   string `json:"role"`
    Status string `json:"status"`
    User   *User  `json:"user"`
}

//Putting sql statements in constant to avoid SQL injection
const (
    prUpdateSQL = "UPDATE %s.%s.%s"
    prSetSQL = "SET %v = '%v'"
    prSetNonEscapeSQL = "%v = %v"
    prSetEscapeSQL = "%v = '%v'"
    prWhereSQL = "WHERE ID = %v"
)

commandstring := fmt.Sprintf(prUpdateSQL+" ", projectID, datasetID, tableName)
for i, r := range pr.Reviewers{
                reviewerString := fmt.Sprintf("Reviewers.%d", i)
                commandstring += fmt.Sprintf(prSetEscapeSQL+", ", reviewerString+".Role", r.Role)
                commandstring += fmt.Sprintf(prSetEscapeSQL+", ", reviewerString+".Status", r.Status)
                commandstring += fmt.Sprintf(prSetEscapeSQL+", ", reviewerString+".User.Name", r.User.Name)
}

我期望结果能够将数组中的不同类对象值设置为pr所保存的新值。相反,我收到此错误消息:UPDATE ... SET不支持使用[1:914]中的[],invalidQuery“的数组修改”

0 个答案:

没有答案