首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在特定日期范围内合并两个相同的数据库?

如何在特定日期范围内合并两个相同的数据库?
EN

Stack Overflow用户
提问于 2020-10-27 23:03:39
回答 1查看 31关注 0票数 0

我是SQL Server这个世界的新手,我接到一个任务是合并两个相同的SQL数据库(SQL Server2000)中的数据表,我在两个数据库中都有相同的结构。这个想法是在新的数据表(database2)中合并所有旧的数据表,直到2020年7月(database1)。

我认为这是一项非常简单的活动,但因为我没有使用SQL Server的经验。你能帮帮我吗?

我需要更新SQL数据库中的表,我的SQL数据库每10分钟收集一次数据。我粘贴在下面的旧数据库(数据到2020年7月31日),新数据库(数据在2020年8月10日之后)和结果新数据库+旧数据库。

代码语言:javascript
复制
Old DB  

Time                ActivePower
31-07-2020 23:40:00 19127100
31-07-2020 23:50:00 19127094
1/8/2020 0:00       NULL    
1/8/2020 0:10       NULL    
代码语言:javascript
复制
New DB  

Time                ActivePower
31-07-2020 23:40:00 NULL
31-07-2020 23:50:00 NULL
1/8/2020            19127086
1/8/2020 0:10       19127078
代码语言:javascript
复制
New DB + Old DB 

Time                ActivePower
31-07-2020 23:40:00 19127100
31-07-2020 23:50:00 19127094
1/8/2020            19127086
1/8/2020 0:10       19127078

EN

回答 1

Stack Overflow用户

发布于 2020-10-28 16:07:05

按照您的示例并假设您正在合并两个名为" OldDB“和" NewDB”的(而不是数据库)和两个名为Time和Time的列,其中Time是每个表上的唯一标识符,您将需要运行两个单独的SQL语句( UPDATE和INSERT)来将数据从OldDB迁移到NewDB(注意:如果您有SQL Server2008或更高版本,这将通过一个SQL MERGE语句来完成)。

代码语言:javascript
复制
update newdb set newdb.activepower = olddb.activepower
from newdb 
inner join olddb on newdb.time = olddb.time 
where newdb.activepower is null;

insert into newdb 
select olddb.* from olddb 
left join newdb on newdb.time = olddb.time 
where newdb.time is null;

附加注意:这还假设您只更新当前没有ActivePower值的NewDB记录。

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

https://stackoverflow.com/questions/64557216

复制
相关文章

相似问题

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