数据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的数据太乱,文件上传之后,数据库没存储就没处理文件没删除掉,现在我甚至明白里面的意思了,但是这些垃圾数据该怎么处理才好呢?我还

没想好更好的解决方案。

      晚上下班的时候一朋友也问,上传文件了 但是没存数据到数据库是否该把文件干掉?我还的要想想,给人家一个合适的答案,我之前是不删掉的,但是看看同事一年文件被

干掉了,真的不知道怎么回人家了。。。。。。。

posted @ 2011-11-09 17:34  红萝卜  阅读(1011)  评论(15编辑  收藏  举报