将空字符串写入 MongoDB 输出 - Pentaho

Posted

技术标签:

【中文标题】将空字符串写入 MongoDB 输出 - Pentaho【英文标题】:Write empty strings to MongoDB Output - Pentaho 【发布时间】:2016-02-23 18:44:37 【问题描述】:

当我尝试在 Pentaho 中将一些值写入我的 mongodb 输出时,我希望将字符串字段的空值转换为空字符串。相反,密钥本身并未出现在 mongo 数据库中。例如,如果我的字段“名称”具有空值或缺失值,那么我希望 'name':'' 出现在我的 mongo 集合中。谁能帮我解决这个问题?

【问题讨论】:

您应该为您的文档设计一个架构,在存储文档之前,您可以检查哪些字段丢失,并将它们设置为'',MongoDB-3.2中的document validation也可以帮助您,详情见docs.mongodb.org/manual/core/document-validation 你也可以看看mongoose,mongoosejs.com/docs/api.html,它可以帮助你将缺失的字段设置为默认值。 【参考方案1】:

使用If field value is null 步骤将空值转换为空字符串。将空字符串实际存储在 mongo set KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL in kettle.properties

KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

另一种解决方案是在 mongo 中创建一个模式,具有默认值,就像 @zydcom 在 cmets 中所说的那样。

【讨论】:

我已经尝试过了,但是 emty 字符串仍然没有写入 mongo。 ...这些链接中提到了其原因:forums.pentaho.com/… ...jira.pentaho.com/browse/PDI-2277 ... PDI 以相同的方式处理空值和空字符串 你检查Set empty string?选项了吗? :) 现在实际测试了,并且可以使用KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL 你能告诉我kettle.properties的位置吗? 它位于您的主目录.kettle/kettle.properties。这取决于您的操作系统。

以上是关于将空字符串写入 MongoDB 输出 - Pentaho的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 将Json数据直接写入MongoDB的方法

如何设置字符串字段不等于空字符串MongoDB聚合管道

将 Python 列表写入 csv 文件

SQL bulkCopy 写入空字符串而不是 NULL

为啥这个 ASCII 字符输出为空字符串(VB.NET)?

C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出