水壶:ETL标准化拆分字符串字段

时间:2015-11-03 11:55:13

标签: normalization etl kettle geokettle

我有数据库,它有一个实际带有两个属性(字符串用“;”分隔)。看看下面的例子:

示例

这是我的数据库A(来源),它有一个这样的表:

enter image description here

事实上,这似乎都没问题,但是当你假设author可以有一个或多个入口时。你会有这样的记录:

文件( id 1,作者“John Matt; Mary Knight”,抽象“Lorem ipsum ......”, 2015)

所以我打算在数据库B(目标)上做的是这样的: enter image description here

a_id中的Authors是引用表author_id上的Document的外键。

首先确保我将填写所有作者(对此没有任何问题)然后将组作者分配到相应的文档(这是问题),因为我可以有这种情况

作者( id 1,名称“John Matt”)         ( id 2,名称“John Matt”)         ( id 2,名称“Mary Knight”)

请注意, id 2 将是参与上一个示例的插入。

问题:

如何使用水壶使用ETL过程完成此过程? 这是一个很好的实践或字符串属性用“;”分隔它是否足够好?

1 个答案:

答案 0 :(得分:0)

如果我已正确理解您的问题,您的数据库中包含

等行

document (id 1, author "John Matt; Mary Knight", abstract "Lorem ipsum...", year 2015)

现在您需要提取由;分隔的多个作者。

PDI为您提供了一个名为将字段拆分为行的步骤。将分隔符用作;,您将获得数据的多个拆分副本。接下来,您可以使用作者表中的唯一ID。

或者,您也可以使用“修改的Java脚本”步骤拆分行。建议您使用第一步。

希望这会有所帮助:)