我正在从 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/