1

我正在使用 pentaho DI 将数据插入事实表。事情是我从中填充事实表的表,其中包含 10000 条记录并且经常更改。使用数据库查找和插入更新我能够正确加载我的事实表一次。但是当新记录被添加到我的源表中(比如它变成 15000)并且我再次将记录插入到事实表中时,这 15000 条记录再次添加到我的事实表中。我想要的是添加事实表中不存在的新 5000 条记录。请建议我需要执行哪些转换才能实现这一点。

4

2 回答 2

3

尝试做一个 upsertion 而不是插入(如果行存在则更新,如果不插入)

于 2013-09-18T18:47:20.197 回答
0

您可以使用一些数据库功能。

在 SQL Server 2008 中,有一个合并sql 可以解决这种类型的问题。

它是 SQL Server 2008 中的一个示例,如下所示:

MERGE Production.UnitMeasure AS target USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name) ON (target.UnitMeasureCode = source.UnitMeasureCode) WHEN MATCHED THEN UPDATE SET Name = source.Name WHEN NOT MATCHED THEN
INSERT (UnitMeasureCode, Name) VALUES (source.UnitMeasureCode, source.Name) OUTPUT deleted., $action, inserted. INTO #MyTempTable;

于 2013-12-05T06:35:20.830 回答