[英]SQL friendly date format in a JoltTransformJson Processor in Apache Nifi
我需要將輸入日期更改為 SQL 友好格式才能將其插入數據庫。 嘗試插入數據庫時,我在imported_at 和processing_at 上都遇到錯誤。
我的流程:JoltTransformJSON -> ConvertJsonToSql -> PutSql
輸入:
{
"transactionDate": "2018-01-01T18:06:00",
}
我的規格:
[
{
"operation": "shift",
"spec": {
"transactionDate": "processed_at"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"processed_at": "=${processed_at.replaceAll('T',' '):toDate('yyyy-MM-dd HH:mm:ss'):format('yyyy-MM-dd HH:mm:ss')}"
}
},
{
"operation": "default",
"spec": {
"processed_at": null,
"imported_at": "${now():format('yyyy-MM-dd HH:mm:ss')}"
}
}
]
我的想法是這樣的: 1. 將 transactionDate 轉換為 processing_at 2. 覆蓋 processing_at 並通過 toDate 函數將其轉換為日期 3. 通過 format 函數將其格式化為我想要的格式
這不起作用,在最好的情況下,我要么得到一個空的processed_at 要么得到初始值。
我試過
${processed_at.replaceAll('T',' '):toDate('yyyy-MM-dd HH:mm:ss'):format('yyyy-MM-dd HH:mm:ss')}
${processed_at:toDate('yyyy-MM-ddTHH:mm:ss'):format('yyyy-MM-dd HH:mm:ss')}
顯然,我無法在 JoltTransformJSON 處理器的 jolt 規范中使用表達式語言訪問 JSON 屬性。
我讓它工作的方式是:
我在 JoltTransformJSON 之前添加了一個 EvaluateJSONPath 處理器並提取了processed_at
作為 Flowfile 屬性。 我的流程如下所示: EvaluateJSONPath -> JoltTransformJSON -> ConvertJsonToSql -> PutSql
在JoltTransformJSON我現在有機會獲得Flowfile屬性processed_at
更早提取。 在 Jolt 規范中,我更新了默認操作: { "operation": "default", "spec": { "processed_at": null, "processed_at": "${processed_at:replace('T', ''):toDate('yyyy-MM-ddHH:mm:ss'):format('yyyy-MM-dd HH:mm:ss.SSS')}" } }
表達式語言中正確的 SQL 日期字段格式為: yyyy-MM-dd HH:mm:ss.SSS
現在流程將行插入到數據庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.