SAP HANA 复制表的一列更新到另一张表

场景:
用户在使用系统过程中,由于误操作,使用SU10将所有用户的打印机配置全部重置,并且没有保存更改日志
此时又不希望通过数据库恢复操作恢复整个系统

前置条件:
操作只对某几个表进行了修改,能明确是哪个表的数据受到了影响
系统有误操作之前的全备份文件
需要有足够的空间恢复数据库
需要有数据库相关表的读写权限以及用于配置SDA的权限
步骤:
1.新建一台新的租户数据库
2.使用全备份文件,恢复数据库
3.正式租户与临时租户建立SDA链接
4.【可选】在正式系统上以源表为基础,拷贝新的测试表1,2,验证update操作
5.更新正式表中的数据

具体步骤

  1. 创建租户数据库
CREATE DATABASE TENANTDB SYSTEM USER PASSWORD Password1
  1. 使用备份文件恢复数据库;如果系统有HA/SR,则需要先创建一个备份文件以同步,然后再做恢复操作。
  2. 正式租户A 与临时租户B创建SDA连接,使用HANA Studio的话,可以在Provisioning下找到,右键创建一个远程连接,参考如下:
    在这里插入图片描述
    在这里插入图片描述
  3. 创建两个测试用表
#按照USR01复制一个新的表 
CREATE TABLE Z_USER01_HPS LIKE "SAPHANADB"."USR01"
#按从远程连接拷贝数据插入
INSERT INTO Z_USER01_HPS SELECT * FROM "SDA_NAME"."SAPHANADB"."USR01"
#检查条目数
select COUNT(1) from "SDA_NAME"."SAPHANADB"."USR01" 
#按照USR01再复制一个新的表 
CREATE TABLE Z_USER01_DP2 LIKE "SAPHANADB"."USR01"
#按从当前数据库拷贝数据插入
INSERT INTO Z_USER01_dp2 SELECT * FROM "SAPHANADB"."USR01"
#检查条目数
select COUNT(1) from Z_USER01_DP2
  1. 按照用户账号相同+选定客户端800 为条件,从B表中指定列更新A表中的数据
update Z_USER01_HPS A set A.SPLD=B.SPLD FROM Z_USER01_HPS A 
inner join Z_USER01_DP2 B on A.BNAME = B.BNAME AND A.MANDT='800'
  1. 执行后,可以使用以下SQL对于两张表的数据是否一致,会输出不一致的结果条目
SELECT A.MANDT,A.BNAME,A.SPLD FROM(
    SELECT MANDT,BNAME,SPLD FROM Z_USER01_HPS  WHERE MANDT='800'
    UNION ALL
    SELECT MANDT,BNAME,SPLD FROM Z_USER01_DP2 WHERE MANDT='800'
) A
GROUP BY  MANDT,BNAME,SPLD
HAVING count(*) = 1
ORDER BY BNAME;
  1. 多次检查,确保无误后,对正式表进行操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值