首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConvertJSONtoSQL和Putsql -时间戳为null时出错

ConvertJSONtoSQL和Putsql -时间戳为null时出错
EN

Stack Overflow用户
提问于 2019-02-19 23:55:28
回答 2查看 576关注 0票数 0

读取CSV并将数据插入到表中。使用convertJsonToSQL和put sql处理器。

来处理我正在使用的时间戳中的空值

1) EvaluateJsonPath (去掉所有时间戳字段,赋值为sql.args.7.original)和

2)然后使用ConvertJSONToSQL,之后

3)我使用UpdateAttribute --我检查null并分配空值,如果它们的原始值不是null,则分配相应的值。(如果NULL sql.args.7.value = NULL)

如果存在非空值,则该流可以完美地工作。

如果存在NULL值,则在PUTSQL处理器上会出错,并显示以下错误:"the value of sql.args.7.value is NULL there be converted to timestamp“。

PS:我确实尝试传递空字符串/-1/null,带引号和不带引号。这些似乎不起作用。

更新:

值为null时使用的表达式名称: sql.args.7.value,value : null。

如果不为空,则为${sql.args.7.original:toDate("yyyy-MM-dd"):toNumber()}

我也试过了,没有使用赋空值。(例如,仅当值不为空时才进行处理。该用例也会失败)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-20 04:27:02

我认为因为您的值在属性中(对于PreparedStatement参数值),并且属性具有字符串值,所以您可能无法拥有真正的null作为值,但我将对此进行研究。同时,也许可以尝试PutDatabaseRecord,这将减少将JSON转换为SQL的需要,从而不使用列值的属性。

票数 0
EN

Stack Overflow用户

发布于 2021-01-20 01:17:31

使用PreparedStatement参数值和PutSQL处理器,PostgreSQL和Nifi尝试插入空字符串('')作为时间戳,这就解决了这个问题。

这个线程帮助捕获了错误:https://dba.stackexchange.com/questions/145757/casting-empty-string-as-null-datetime

检查它是否为空字符串,并在插入时转换为NULL:

代码语言:javascript
复制
INSERT INTO abc (col_a, timestamp)
VALUES (?, cast(NULLIF(?,'') as timestamp));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54770268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档