Pentaho:如何使用Pentaho转换将字符串数据类型转换为XML数据类型

Pentaho:如何使用Pentaho转换将字符串数据类型转换为XML数据类型,xml,postgresql,csv,pentaho,Xml,Postgresql,Csv,Pentaho,需要从CSV文件中提取数据,然后将其转换为XML,最后加载到目标 CSV文件中的数据是 Number,Email,Email Communication,Member Type,VIN 85320000399,test@hotmail.com,TRUE,CANLAN,TEST 81890000887,test@hotmail.com,TRUE,CANLAN,TEST 85480001175,xx@live.ca,TRUE,CANLAN,TEST 85370001847,abc@hotmail.c

需要从CSV文件中提取数据,然后将其转换为XML,最后加载到目标

CSV文件中的数据是

Number,Email,Email Communication,Member Type,VIN
85320000399,test@hotmail.com,TRUE,CANLAN,TEST
81890000887,test@hotmail.com,TRUE,CANLAN,TEST
85480001175,xx@live.ca,TRUE,CANLAN,TEST
85370001847,abc@hotmail.com,TRUE,CANLAN,TEST
85500000418,123ftremblay.ca,TRUE,CANLAN,TEST
XML格式

<MemberUpdate>
<MemId>85320000399</MemId>
<emailAddress>test@gmail.com</emailAddress> 
<optInFlag>true</optInFlag>
<memberType>CANLAN</memberType>
</MemberUpdate>


当我将本地数据库中的表数据类型更改为“字符变化”时,转换成功运行。但是我想这样做,而不需要对数据库做任何更改。由于我们无法对“Prod数据库”进行任何更改,我正在寻找一种方法,将“addxml”转换生成的xml字符串输出转换为实际的xml

您不能在数据库上使用XML数据类型,因为PDI不理解它。仅使用varchar或text。

下面是我所做的,我从“表输出”中删除了XML列,然后添加了“阻止此步骤直到步骤完成”转换,以等待目标加载所有列(除XML外)。然后我使用了一个“执行SQL脚本”,在其中我运行了下面的脚本

UPDATE workflow_transaction SET content_data = ('?' ::xml) where workflow_transaction_id = ?
updatehere通过将addxml步骤的字符串输出转换为实际的XML,更新表并将值插入XML列

我不知道我的答案有多正确,但我使用样本数据得到了期望的结果。未来可能会或可能不会出现复杂情况,但这符合我目前的目的。:)

另一种获得结果的有效方法是取消“表输出”和“块”步骤,而是在执行SQL脚本转换中使用insert脚本将数据加载到目标中。插入脚本应该是这样的

插入到工作流\事务列(工作流\事务\ id、内容\数据) 值(?,?)


注意:使用insert脚本,我们不需要将输入数据类型强制转换为xml。

我不能这样做。有什么方法可以使用Pentaho转换将字符串转换为xml吗?xml只是一个字符串。从PDI的角度来看,这只是一个字符串。我不认为它会理解XML是数据库中一种独立的数据类型。是的,我知道了。但我正在努力完成这项任务,我一直在尝试一切,只是为了让它运行(不改变数据库结构)。
UPDATE workflow_transaction SET content_data = ('?' ::xml) where workflow_transaction_id = ?