导入到BigQuery中之前的CSV中的日期格式

时间:2019-05-09 14:45:18

标签: go google-cloud-storage

我已经开发了Golang代码,该代码将从Google云存储中提取csv文件,而不是将其导入到Big Query表中。

一切正常,除了我的CSV包含日期格式为“ 2017-06-14 00:49:52 PDT”的DATE列。由于格式必须为“ 2017-06-14”,因此导致无法在Big Query中导入CSV文件的问题。在上传到Google存储设备之前,我无法在CSV中手动对其进行编辑,因为它涉及的文件非常大(每天都会更改)。

在执行将其导入到Big Query的其余代码之前,是否可以使用go lang更新存储在存储中的CSV并在此列(DATE)仅保留“ 2017-06-14”值?还有其他解决方案吗?

提前谢谢!

package storagetobigquery

import (
    "cloud.google.com/go/bigquery"
    "github.com/gin-gonic/gin"
    "google.golang.org/appengine"
)

// StoragetoBigquery function
func StoragetoBigquery(c *gin.Context) {
    ctx := appengine.NewContext(c.Request)

    client, err := bigquery.NewClient(ctx, "MY PROJECT ID")

    gcsRef := bigquery.NewGCSReference("PATH TO THE GOOGLE STORAGE CSV FILE")
    gcsRef.SourceFormat = bigquery.CSV
    gcsRef.AutoDetect = true
    gcsRef.SkipLeadingRows = 1


    loader := client.Dataset("DATASET NAME").Table(TABLE NAME).LoaderFrom(gcsRef)
    loader.WriteDisposition = bigquery.WriteTruncate

    job, err := loader.Run(ctx)
    if err != nil {
        panic(err)
    }
    status, err := job.Wait(ctx)
    if err != nil {
        panic(err)
    }

    if status.Err() != nil {
        panic(status.Err)
    }
}

1 个答案:

答案 0 :(得分:0)

如果必须使用Go客户端库,则在更改格式之前,需要从GCS获取对象。然后,根据需要重新上传以将其导入BQ。 https://godoc.org/cloud.google.com/go/storage中没有记录任何方法可以直接在GCS中直接更新对象,只有其元数据即可。