来自不同数据源的产品表整合流程

时间:2018-04-17 20:41:11

标签: sql-server merge data-warehouse consolidation

我们公司曾经拥有onpremiere和云ERP系统 最后想将每个ERP系统的数据提取到临时数据库 在我们的数据仓库中。这两个系统是表结构的相同中间体 然而,我们需要合并几个表来创建一个唯一的表。 例如,来自ERP1的dbo.Product和来自ERP2系统的dbp.Product具有重叠的productId(s) 在不破坏数据集成的情况下合并这两个表的理想情况

实施例: ERP1.Product( ProductId int, ProductName varchar(90), 产品varchar(MAX))

ERP2.Product( ProductId int, ProductName varchar(90), 产品varchar(MAX))

enter image description here

2 个答案:

答案 0 :(得分:0)

UNION可行

select * from ERP1 
union 
select * from ERP2

UNION返回不同的值,其中UNION ALL返回所有可能重复的值。当然,每个语句必须返回相同数量的列,并且具有匹配的数据类型。

如果要动态创建表,可以在第一个语句中使用INTO子句

select * from Server1.dbo.ERP1
into thisServer.dbo.StagingTable
union 
select * from Server2.dbo.ERP2

答案 1 :(得分:0)

这里最大的问题是,当产品ID重叠时,是否需要在合并时尊重这一事实?即他们真的是同一产品,还是意外重叠?

如果重叠/确实/需要遵守,那么我建议您在产品名称/描述不同的情况下需要确定哪个是主要来源,然后以一种方式加载数据仓库表忽略来自辅助来源的重复项,例如:

... where erp2product.productid not in (select erp1product.productid from erp1product) 

如果没有' true'重叠,然后我倾向于在产品ID的前面添加一个前缀(或添加一个'源'列)以区分它们在数据仓库中,尽管数据仓库中的任何其他表明显包含产品ID必须遵循相同的规则。