首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自不同数据源的产品表合并过程

来自不同数据源的产品表合并过程
EN

Stack Overflow用户
提问于 2018-04-18 04:41:11
回答 2查看 135关注 0票数 0

我们公司曾经有onpremiere和云ERP系统,他们最终想要从每个ERP系统中提取数据到我们数据仓库中的临时数据库。这两个系统在表结构和模式方面是相同的,但是,我们需要合并几个表来创建唯一的表。例如,来自ERP1的dbo.Product和来自ERP2系统的dbp.Product具有重叠的productId。在不破坏数据完整性的情况下合并这两个表的理想情况是什么

示例: ERP1.Product( ProductId int,ProductName varchar(90),Product varchar(MAX) )

ProductName 2.乘积( Product,ERP2.VARCHAR(90),乘积varchar(MAX) )

EN

回答 2

Stack Overflow用户

发布于 2018-04-18 04:50:23

UNION可以工作

代码语言:javascript
运行
复制
select * from ERP1 
union 
select * from ERP2

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

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

代码语言:javascript
运行
复制
select * from Server1.dbo.ERP1
into thisServer.dbo.StagingTable
union 
select * from Server2.dbo.ERP2
票数 0
EN

Stack Overflow用户

发布于 2018-04-18 04:54:19

这里最大的问题是,当产品ids重叠时,合并时是否需要遵守这一事实?也就是说,它们是否真的是同一个产品,或者重叠是偶然的?

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

代码语言:javascript
运行
复制
... where erp2product.productid not in (select erp1product.productid from erp1product) 

如果没有'true‘重叠,那么我倾向于在产品id的前面加上一个前缀(或者添加一个'source’列),以便在数据仓库中区分它们,尽管很明显,数据仓库中包含产品id的任何其他表都必须遵循相同的规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49887155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档