google-bigquery - 无法使用 Java Bigquery Client API 在 BigQuery 中写入日期

标签 google-bigquery google-cloud-storage google-cloud-dataflow

我正在从 GCS 中的 CSV 文件到 BQ 执行一些 ETL,一切正常,除了日期。我的表中的字段名称是 TEST_TIME,类型是 DATE,所以在 TableRow 中我尝试传递一个 java.util.Date、一个 com.google.api.client.util.DateTime、一个字符串、一个带有数字的 Long 值秒,但没有工作。

我收到如下错误消息:
无法将非字符串 JSON 值转换为 DATE 类型。字段:TEST_TIME;值(value): ...

使用 DateTime 时出现此错误:
为非记录字段指定的 JSON 对象:TEST_TIME。

//tableRow.set("TEST_TIME", date);
//tableRow.set("TEST_TIME", new DateTime(date));
//tableRow.set("TEST_TIME", date.getTime()/1000);
//tableRow.set("TEST_TIME", dateFormatter.format(date)); //e.g. 05/06/2016

最佳答案

我认为您应该通过 String格式为 YYYY-MM-DD ,这类似于直接将 REST API 与 JSON 一起使用。尝试这个:

tableRow.set("TEST_TIME", "2017-04-06");

如果有效,那么您可以将您拥有的实际日期转换为该格式,它也应该有效。

关于google-bigquery - 无法使用 Java Bigquery Client API 在 BigQuery 中写入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43259996/

相关文章:

sql - 使用 WHERE 子句的时间戳事件行的差异

google-bigquery - BigQuery Standard 分组时获取第一个非空值

encryption - 客户提供的 dart/gcloud 加密 key

google-cloud-platform - 我应该担心 datastoreRpcErrors 吗?

google-analytics - Google Analytics/BigQuery数据导出

google-bigquery - 从 BigQuery SQL 中的日期获取 MONTH NAME

java - App Engine/Google 云存储 输入流错误

java - 从同一个 Storage 对象创建的 Insert 对象可以并发执行吗?

google-cloud-dataflow - 如何使用 Apache Beam Python SDK 在给定 key 的两个源上执行 "diff"?

google-app-engine - 谷歌云数据流 ETL(数据存储 -> 转换 -> BigQuery)