数据UPDATE掉之后的感想
今天不小心把数据库一列数据UPDATE掉,郁闷,还好是测试库数据,所以,写了个方法,
把另个库里面的数据跟局条件UPDATE过来了。
场景:
同一个服务器上,不同的数据库即:A库里有表A一列的数据,迁移到B库表A(其实A库与B库是一样的库,一个是开发的,一个是测试的,这一
列数据不小心被干掉了)。
原因:
刚开始的时候我们客户是用EXCEL整理数据的,之后我们在一个迭代里面把他们工作放到互联网上,所以数据本身是人家提供的,所以会出现这
些问题,这些只是自己测试用的,真实的数据库我现在可没这么干。
1.重现环境:创建2数据库以及数据库表以及插入同样的数据
--创建数据库zymtext1并创建数据库表如下:
CREATE TABLE [dbo].[S_User](
[uid] [int] NULL,
[name] [varchar](50) NULL,
[sex] [varchar](10) NULL,
[lasttime] [datetime2](7) NULL
) ON [PRIMARY]
GO
--插入数据
inserT into zymtext1.[dbo].S_User(uid,name,sex,lasttime)
valueS(1,'zym','男',getdate())
inserT into zymtext1.[dbo].S_User(uid,name,sex,lasttime)
valueS(2,'zzz','女',getdate())
select * from zymtext1.[dbo].S_User as b
---创建数据库zymtext2并创建数据库表如下:
CREATE TABLE [dbo].[S_User](
[uid] [int] NULL,
[name] [varchar](50) NULL,
[sex] [varchar](10) NULL,
[lasttime] [datetime2](7) NULL
) ON [PRIMARY]
GO
--插入数据
inserT into zymtext2.[dbo].S_User(uid,name,sex,lasttime)
valueS(1,'zym','男',getdate())
inserT into zymtext2.[dbo].S_User(uid,name,sex,lasttime)
valueS(2,'zzz','女',getdate())
--两个数据库表数据是:
select * from zymtext2.[dbo].S_User as a
2.误操作,UPDATE其中一个库里面的数据
----以下是我误操作修改的数据库数据库一条SQL(不小心将数据干掉了)
update zymtext2.[dbo].S_User set zymtext2.[dbo].S_User.sex=''
3.使数据恢复原状,只要一句UPDATE
---查询数据发现两个表的数据不一样,那么怎么让两个库里两个表里的数据保持一致呢?
---方案:用数据导入的方式,或者直接一条sql语句也就是我们说的跨库操作数据更新数据,或者是找回数据的工具了,下面只是一条SQL语句哦。
update b
set b.sex=a.sex
from zymtext1.[dbo].S_User as b,zymtext2.[dbo].S_User as a
where b.uid=a.uid
4.验证刚刚的操作是否正确
----最后查询数据发现是对的,嘻嘻OK
select * from zymtext1.[dbo].S_User as b
select * from zymtext2.[dbo].S_User as a
总结:现在才明白,老大为什么在查询分析器里禁止用delete与UPDATE这个操作语句,我只是不下心就丢到一部分数据,幸好有开发库,要不哭也不知道去哪呀?以后再也不要轻易的点运行按钮了。
-----------------------------------------后记--------------------------------------------
晚上后记:
下班的时候一同事跟我说“当时我还一愣,XX写的程序,把人家一年的文件给干掉了,人家客户的那个小丫头都吓哭了。。。。。我终于感觉到备份的意义了”。其实在很久以
前我就感觉到数据本身就是程序的一部分了,不管你是存到数据库里面的一条条数据,还是文件。
”拒绝DELETE,拒绝UPDATE“ 未雨绸缪,我感觉是最好的解决方案,当然有很多找数据的工具,我也很喜欢,但是这些本人我们能从程序员本人身上解决的问题,为什么
非要等事情发生之后才去解决呢?
之前我甚至在抱怨,我说XX的数据太乱,文件上传之后,数据库没存储就没处理文件没删除掉,现在我甚至明白里面的意思了,但是这些垃圾数据该怎么处理才好呢?我还
没想好更好的解决方案。
晚上下班的时候一朋友也问,上传文件了 但是没存数据到数据库是否该把文件干掉?我还的要想想,给人家一个合适的答案,我之前是不删掉的,但是看看同事一年文件被
干掉了,真的不知道怎么回人家了。。。。。。。