使用 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,而不是一个很好的布尔值 true 和 false。我想在转换中做一个映射,说 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
(假设接收端将 true
和 false
理解为布尔常量)。
【参考方案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 - 从二进制类型的字段将十六进制转换为数字