我在工作中使用Pentaho数据集成进行众多项目。我们主要使用Postgres来处理我们的数据库。我们的一个较旧的表格有两列设置为键入位(1)以将0存储为false,将1存储为true。Pentaho数据集成输入/输出位类型错误
我的任务是在开发环境中将生产表与副本进行同步。我正在使用表格输入读取数据,并立即尝试执行插入/更新。但是,由于通过PDI转换为布尔值,它失败了。我更新了查询以将值转换为整数来保留0和1,但是当我再次运行它时,我的转换失败,因为整数不能是一个位值。
我已经找了几天尝试不同的东西,如使用JavaScript步骤转换为一点,但我一直未能成功地读取位类型,并使用插入/更新步骤来存储数据。我也不相信插入/更新步骤能够更新用于定义列的数据类型的SQL。
该数据库建立连接使用:
- 连接类型:PostgreSQL的
- 访问:天然(JDBC)
- 支持布尔数据类型:真
- 引用所有在数据库:真
注意:更改表以更改数据类型i在这个时间点上不是可选的。目前太多的应用程序依赖于此表,因此以这种方式改变它可能会导致不良影响
任何帮助,将不胜感激。谢谢。
'...此时不是可选的。目前太多的应用程序依赖于此表,因此以这种方式改变它可能会导致不良影响。“您是否考虑过使用VIEW模拟* old *行为? (如果数据只用于只读,则很容易;否则更难) – joop
我遇到过使用PDI和MySQL的情况。相同的用例,在表输入后立即插入/更新。 MySQL的解决方案是'cast(bit_column_name AS signed)'。但是,我只是用PostgreSQL 9.3数据库和PDI 5.4稳定性来测试它,并且不需要投射,无论如何。您可以添加源表和目标表的部分DDL,以及您运行的PDI版本吗? – YuvalHerziger