如何使用NIFI将日期插入mongoDB

时间:2018-02-12 08:11:18

标签: mongodb csv apache-nifi isodate

我正在尝试使用NIFI 1.4将数据从csv文件添加到mongoDB。 CSV文件包含以下数据:

101,ISODate(2006-01-02T15:04:05.000Z)

我正在使用PutMongoRecord处理器以及CSVReader 1.4.0控制器服务。 我已将模式定义为:

{"name" :"agent","type":"string"},
{"name" :"transactiondate","type":"string"}

因此,我在mongoDB中将输出作为"ISODate(2006-01-02T15:04:05.000Z)"作为字符串的数据类型,但它应该是日期。因此,我需要输出作为ISODate("2006-01-02T15:04:05.000Z")。 如果有任何办法,请提供帮助。

TIA

2 个答案:

答案 0 :(得分:2)

我认为您需要将日期从字符串转换为Avro逻辑类型。根据{{​​3}},"对于PutMongoRecord,您所要做的就是使用长注释作为时间戳或注释为日期的int,并确保记录阅读器已完成为时间戳和日期正确配置的格式选项"

答案 1 :(得分:0)

@mattyb的答案是完美的。由于我遇到了同样的情况并能够解决此问题,因此只需在此处添加更多详细信息即可。

1。这里是一个示例,说明如何在AVRO模式中处理日期和时间戳。

{
  "type": "record",
  "namespace": "com.example",
  "name": "TestRecord",
  "fields": [
    { "name": "FLOAT_TO_INT", "type": "float" },
    { "name": "TIMESTAMP"   , "type": { "type":"long", "logicalType":"timestamp-millis"} },
    { "name": "TEXT"        , "type": "string" },
    { "name": "DATE"        , "type": { "type":"int", "logicalType":"date"} }
  ]
} 

2。在CSV阅读器配置中,使用上面的AVRO模式,并在日期格式中指定yyyy-MM-dd