两个结构一样表的备份

princesky 2010-08-17 10:31:01
A表和B表结构一样。

每个月底A表的数据要备份到B表。
B表数据量比A表要大。所以
B表同样数据存在的话,
A更新到B,
数据不存在的话,
A添加到B

这SQL怎么写啊?
...全文
69 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
心中的彩虹 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 princesky 的回复:]
A表和B表结构一样。

每个月底A表的数据要备份到B表。
B表数据量比A表要大。所以
B表同样数据存在的话,
A更新到B,
数据不存在的话,
A添加到B

这SQL怎么写啊?
[/Quote]



alter table B nologging;

merge into B using A on (A.id=B.id)
when matched then update set B.col1=A.col,B.col12=A.col2....
when not matched then insert(B.id,B.col,B.col2......)
values(A.id,A.col,A.col2......)




princesky 2010-08-17
  • 打赏
  • 举报
回复
不好意思,确实有些模糊。其实很简单。
就是用A的主KEY到B表查询,
B表有数据的就更新。
找不到数据就插入。

duanzhi1984 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 princesky 的回复:]
A表和B表结构一样。

每个月底A表的数据要备份到B表。
B表数据量比A表要大。所以
B表同样数据存在的话,
A更新到B,
数据不存在的话,
A添加到B

这SQL怎么写啊?
[/Quote]
try
结构:ID (主键),name,type,sex..


update B SET B.name=A.name,B.type=A.type,B.sex=A.sex FROM A where A.ID=B.ID  --更新
INSERT INTO B SELECT *FROM A WHERE NOT EXISTs(SELECT 1 FROM B WHERE B.ID=A.ID)--插入







csuxp2008 2010-08-17
  • 打赏
  • 举报
回复
描述太过模糊了,

B表同样数据存在的话 是什么? 整条记录完全一致?
A更新到B 又是怎么个更新法?

如果字段不是太多,请给出表结构

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧