ERROR: column "DOJ" is of type timestamp without time zone but expression is of type character varying

ERROR: column "DOJ" is of type timestamp without time zone but expression is of type character varying

我正在尝试从 oracle 数据库 table 中提取数据并使用 nifi

插入到 postgres 数据库 table

我将 ExecuteSQLRecord 与 JsonRecordSetWriter 一起使用,并将此 json 数据提供给 PutDataBaseRecord,记录 reader 作为 JsonTreeReader。

我在队列中的数据是这样的:-

[ {
  "EMP_ID" : "1",
  "DOJ" : "631170000000"
}, {
  "EMP_ID" : "2",
  "DOJ" : "631170000000"
}]

根据usage guide

任何数值都可以强制转换为日期、时间或时间戳类型,方法是假设 Long 值是自纪元(格林威治标准时间,1970 年 1 月 1 日午夜)以来的毫秒数。 如果字符串值的格式与配置的“日期格式”、“时间格式”或“时间戳格式”相匹配,则可以将其强制转换为日期、时间或时间戳类型。

但在我的例子中,日期被提取为毫秒作为字符串。

我是否缺少有关 date/timestamp 字段的 JsonRecordSetWriter 和 JsonTreeReader 的任何配置。

我在 JsonRecordSetWriter 中看到了提供日期、时间或时间戳格式的选项。 在我的 oracle 数据库日期字段中有这样的数据:- 2001-12-01 00:00:00 但是我如何在 JsonRecordSetWriter 的日期属性中提供这个值,因为它需要日期格式与 Java 日期格式相同。

如何解决我的问题,如何从 oracle 日期字段或毫秒中提取时区格式的数据,但作为数字...

对于 ExecuteSQLRecord,尝试将 Use Avro Logical Types 设置为 true,在这种情况下,根据使用文档,日期不应为字符串