我想弄清楚如何获得一个简单的 bq 加载命令来使用https://godoc.org/cloud.google.com/go/bigquery#Table.LoaderFrom手动运行它看起来像这样:bq load --source_format=AVRO --ignore_unknown_values --replace=true mydataset.mytable gs://mybucket/table/*在我的 golang 中使用 exec.Command() 成功运行它看起来像这样:exec.Command("bq", "load", "--source_format=AVRO", "--ignore_unknown_values", "--replace=true", "mydataset.mytable", "gs://mybucket/table/*")但是,在尝试加载和 job.wait 成功运行时,我无法让这个程序在没有分段错误的情况下运行它似乎在程序的 job.wait 行出现分段违规package mainimport ( "context" "log" "cloud.google.com/go/bigquery")func main(){ ctx := context.Background() client, err := bigquery.NewClient(ctx, "my-project-id") if err != nil { // TODO: Handle error. } gcsRef := bigquery.NewGCSReference("gs://mybucket/table/*") gcsRef.SourceFormat = "AVRO" gcsRef.IgnoreUnknownValues = true // TODO: set other options on the GCSReference. ds := client.Dataset("mydataset") loader := ds.Table("mytable").LoaderFrom(gcsRef) // TODO: set other options on the Loader. job, err := loader.Run(ctx) if err != nil { // TODO: Handle error. } status, err := job.Wait(ctx) //seg faults right here if err != nil { // TODO: Handle error. } if status.Err() != nil { // TODO: Handle error. }}
1 回答
手掌心
TA贡献1942条经验 获得超3个赞
恐慌可能来自对作业变量的 nil 指针引用。
我建议包括一个log.Fatal(err)
在你所有的err!= nil
街区。
这将帮助您更清楚地了解工作分配不正确的原因。
当你在 go log 中编写像这样的脚本时。Fatal 是退出程序并准确打印问题所在的好方法。
使用 go,你总是试图将错误冒泡到堆栈中,以确定代码是否应该继续执行,是否可以恢复,或者它是否只是一个致命的事情,你应该结束程序。
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消