提问人:Rodrigo 提问时间:10/27/2020 最后编辑:BritsRodrigo 更新时间:10/28/2020 访问量:249
如何在特定日期范围内合并两个相同的数据库?
How I can merge two identical databases in a range date specific?
问:
我是 SQL Server 领域的新手,我收到了一项任务,即在两个相同的 SQL 数据库 (SQL Server 2000) 中合并数据表,我在两个数据库中具有相同的结构。这个想法是将所有旧数据表合并到新数据表(database2)中,直到2020年7月(database1)。
我认为这是非常简单的活动,但由于我没有使用SQL Server的经验。拜托,你能帮我吗?
我需要更新 SQL 数据库中的表,我的 SQL 数据库每 10 分钟收集一次数据。我粘贴了旧数据库(截至 2020 年 7 月 31 日的数据)、新数据库(2020 年 8 月 10 日之后的数据)和结果新数据库 + 旧数据库。
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
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
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
答:
0赞
user9601310
10/28/2020
#1
按照您的示例,假设您要合并两个名为“OldDB”和“NewDB”的表(不是数据库),其中只有名为 Time 和 ActivePower 的两列,其中 Time 是每个表的唯一标识符,您将需要运行两个单独的 SQL 语句(一个 UPDATE 和一个 INSERT)将数据从 OldDB 迁移到 NewDB(注意: 如果您有 SQL Server 2008 或更高版本,则使用单个 SQL MERGE 语句即可完成此操作。
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 记录。
上一个:查询表中所有行的分层文件夹信息
评论