如何使用 NIFI 将日期插入 mongoDB
How to insert Date into mongoDB using NIFI
我正在尝试使用 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"}
所以结果我得到 output as "ISODate(2006-01-02T15:04:05.000Z)"
in mongoDB as datatype as String 但它应该是 日期 。所以为此我需要 output as ISODate("2006-01-02T15:04:05.000Z")
。
如果有任何办法,请帮忙。
TIA
我认为您需要将日期从字符串转换为 Avro 逻辑类型。根据this、"For PutMongoRecord all you have to do is use a long annotated as a timestamp or an int annotated as a date and make sure record reader has the format options done configured correctly for timestamp and date."
@mattyb 回答很完美。只是在这里添加更多细节,因为我 运行 遇到了同样的情况并且能够解决它。
1.Here 是一个关于如何在 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.In 你的 CSV reader 配置,使用上面的 AVRO 模式,在日期格式中,指定 yyyy-MM-dd
我正在尝试使用 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"}
所以结果我得到 output as "ISODate(2006-01-02T15:04:05.000Z)"
in mongoDB as datatype as String 但它应该是 日期 。所以为此我需要 output as ISODate("2006-01-02T15:04:05.000Z")
。
如果有任何办法,请帮忙。
TIA
我认为您需要将日期从字符串转换为 Avro 逻辑类型。根据this、"For PutMongoRecord all you have to do is use a long annotated as a timestamp or an int annotated as a date and make sure record reader has the format options done configured correctly for timestamp and date."
@mattyb 回答很完美。只是在这里添加更多细节,因为我 运行 遇到了同样的情况并且能够解决它。
1.Here 是一个关于如何在 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.In 你的 CSV reader 配置,使用上面的 AVRO 模式,在日期格式中,指定 yyyy-MM-dd