Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BigQuery:导入CSV时无法识别时区_Csv_Google Cloud Platform_Timezone_Timestamp_Google Bigquery - Fatal编程技术网

BigQuery:导入CSV时无法识别时区

BigQuery:导入CSV时无法识别时区,csv,google-cloud-platform,timezone,timestamp,google-bigquery,Csv,Google Cloud Platform,Timezone,Timestamp,Google Bigquery,从CSV文件加载到BigQuery时,如何定义时间戳的时区 这些似乎都不起作用: 2018-07-31 11:55:00欧洲/罗马 2018-07-31 11:55:00欧洲中部时间 我得到以下错误: {地点:“查询”;信息:“无法识别的时区:欧洲/罗马; 无法将“2018-07-31 11:55:00欧洲/罗马”解析为的日期时间 字段ts(位置0)从位置0开始;原因:“invalidQuery”} 我正在使用以下Go代码从Google云存储运行导入: gcsRef := bigquery.

CSV文件加载到BigQuery时,如何定义时间戳的时区

这些似乎都不起作用:

  • 2018-07-31 11:55:00欧洲/罗马
  • 2018-07-31 11:55:00欧洲中部时间
我得到以下错误:

{地点:“查询”;信息:“无法识别的时区:欧洲/罗马; 无法将“2018-07-31 11:55:00欧洲/罗马”解析为的日期时间 字段ts(位置0)从位置0开始;原因:“invalidQuery”}

我正在使用以下Go代码从Google云存储运行导入:

gcsRef := bigquery.NewGCSReference(gcsFilename)
gcsRef.SourceFormat = bigquery.CSV
gcsRef.FieldDelimiter = "|"
gcsRef.Schema = bigquery.Schema{
    {Name: "ts", Type: bigquery.TimestampFieldType},
    {Name: "field2", Type: bigquery.StringFieldType},
    {Name: "field3", Type: bigquery.StringFieldType},
}
loader := bigqueryClient.Dataset("events").Table("mytable").LoaderFrom(gcsRef)
loader.WriteDisposition = bigquery.WriteAppend

job, err := loader.Run(ctx)
if err != nil {
    log.Fatalln("loader.Run", err.Error())
}
status, err := job.Wait(ctx)
if err != nil {
    log.Fatalln("job.Wait", err.Error())
}
if status.Err() != nil {
    log.Fatalln("Job completed with error: %v", status.Err(), status.Errors)
}

为了让它工作-尝试将
ts
字段声明为字符串,然后您将能够在您将使用的任何查询中将其解析为时间戳-使用已经提到的(在注释中)方法-例如
选择时间戳(ts)

在您的问题中,您说您可以(至少听起来是这样)从CSV加载,但是这个错误表明你确实做了一个查询-你能澄清一下吗!同时,您可以运行
选择时间戳'2018-07-31 11:55:00 Europe/Rome',时间戳'2018-07-31 11:55:00 CET'
以确认两个时区都是正确的/valid@MikhailBerlyant我正在使用Go从Google云存储运行导入。我更新了我的问题,指定了我正在使用的代码。我想将该字段声明为时间戳,这样我就可以自动在该字段上对表进行分区。难道没有任何方法可以指定这样的时间戳是相对于与UTC不同的时区的吗?或者更好的解决方案是将该字段拆分为两个不同的字段:日期和时间?并使用日期作为分区字段?这应该可以工作-但是在这种情况下,分区将不在时区之外。另外,有没有方法(在数据加载期间)指定时间戳的时区?