使用 Pentaho Kettle 将字符串转换为布尔值

Posted

技术标签:

【中文标题】使用 Pentaho Kettle 将字符串转换为布尔值【英文标题】:Convert string to boolean with Pentaho Kettle 【发布时间】:2017-11-20 15:23:25 【问题描述】:

我正在使用 Pentaho Kettle 将 Oracle 数据库移动到 Mongo 数据库。我已经成功完成了几乎所有我想做的事情,但我还有最后一个问题。

在 oracle db 中,它们有一个具有两种状态的字段:Y 或 N,而不是一个很好的布尔值 truefalse。我想在转换中做一个映射,说 Y 是 true 而 N 是 false,但是 Pentaho 把它翻译成字符串,而不像真正的 true 和 false

我有设置布尔值的简单方法吗?

提前致谢!

【问题讨论】:

我不熟悉 MongoDB、Pentaho 或其中的任何一个。话虽如此:如果您要从 Oracle 转换为其他东西,并且其他东西具有 BOOLEAN 数据类型(Oracle 没有),您似乎需要在接收端编写类似 CASE 表达式的东西。类似于:如果现有的 Y/N 列名为“flag”,则导入 case when flag = 'Y' then true else false end(假设接收端将 truefalse 理解为布尔常量)。 【参考方案1】:

您可以在Meta-data 面板上使用Select values 步骤更改类型。

而且它有效!

但是,由于 PDI 中布尔值的字符串表示是 Y/N 以及根据上下文的真/假,因此有罪的步骤可能是 Mongo DB Output

右键单击 Oracle Table Input,选择 output field 并检查您的字段类型。如果不是布尔值,则使用Select value 进行转换。

然后右键单击Mongo DB Output,选择input field 并检查您的字段类型。如果它是布尔值,那么它会被默默地转换为 Y/N。在这种情况下,使用Replace in string 步骤并将 Y/N 转换为“true”/“false”作为字符串,并让 Mongo DB 默默地将这些特殊字符串转换为布尔值。

【讨论】:

您必须在数据库配置中启用“额外属性 [SUPPORTS_BOOLEAN_DATA_TYPE]”和/或“支持布尔数据类型”。点击编辑,然后点击“功能列表”

以上是关于使用 Pentaho Kettle 将字符串转换为布尔值的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho Kettle - 从二进制类型的字段将十六进制转换为数字

Pentaho Kettle 从字符串转换为整数/数字错误

使用 Pentaho Kettle/PDI 将行列转换为行

Pentaho Kettle:邮寄转换的结果

如何在没有标题列的情况下将 Pentaho Kettle 中的表格从行转换为列

Kettle Pentaho 通过最新数据进行备份转换