高分求解一个应该不难的sql,批量删除更新问题

artak 2013-04-24 03:33:04
有一个users表,字段如下,里面的记录大概1000条
序号 姓名 年龄 身高 体重

每天都有人从别的地方将这1000条记录的txt传输过来
这1000条记录可能里面某些人,某些字段有变化了
怎么更新我本地的表好呢?
我现在的做法是首先delete本地1000条记录,然后读txt的1000条记录入数据库

这样会不会发生一个问题,我没删完的过程,又插入了新的记录,导致删除出错?
我是用delete * from Users表的

另外求更好的方法的sql,因为我这样删除,Id每天都自增1000,会不会影响大?因为可能只有某几条记录变更而已


...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
连星入剑端 2013-04-25
  • 打赏
  • 举报
回复
1000条数据,删了重来过也没啥,不然还得比较数据匹配不匹配之类的,就如同4楼说的那样,既没有id增长的问题,又快速。 如果仅是学习一种方法的话,除了6楼的方法,你也可以替换成Merge。
dyf0130 2013-04-25
  • 打赏
  • 举报
回复
暴力的在4楼,温和的在6楼
超凡 2013-04-25
  • 打赏
  • 举报
回复
引用 楼主 artak 的回复:
本帖最后由 artak 于 2013-04-24 15:34:59 编辑 有一个users表,字段如下,里面的记录大概1000条 序号 姓名 年龄 身高 体重 每天都有人从别的地方将这1000条记录的txt传输过来 这1000条记录可能里面某些人,某些字段有变化了 怎么更新我本地的表好呢? 我现在的做法是首先delete本地……
一千条数据作改操作也不慢! 建议选用修改操作!... 在存储过和中将[txt文件]的内容查询到一张临时表中 update table1 a set tol1=t1,tol2=t2,tol3=t3 from #table1 b where a.Tid=b.Tid
daiyueqiang2045 2013-04-25
  • 打赏
  • 举报
回复
建议使用增量式更新你本地数据。 思路,源表添加一个时间戳字段,标记删除字段,创建一个关系表存储你上次同步的时间戳。 目标表中添加标记删除字段。 首先根据服务器关系表中存储上一次更新的时间戳,查询出来服务器那些数据进行了更新, 然后直接更新目标表的数据。 时间戳字段如果本行中数据发送变化会自增变化,使用时间戳字段进行更新是很多数据仓库增量更新的方式。 当然也可以根据源表数据库日志进行增量更新
唐诗三百首 2013-04-24
  • 打赏
  • 举报
回复
try this,

truncate table users

bulk insert users
 from [txt文件]
 with ([参数])
zhengnan2012 2013-04-24
  • 打赏
  • 举报
回复
看哪些数据变化,你可以用临时表导入1000条后,再一次更新修改过的数据。
ycj80 2013-04-24
  • 打赏
  • 举报
回复
开事务,就不会出现删除同时有新增. 用truncate table 清除表,ID会从1开始自增.
shoppo0505 2013-04-24
  • 打赏
  • 举报
回复
这个要看你怎么更新了,如果记录都是以最新的档案为准,那么可以先全部删除,或者对于不同的数据进行update。 不用担心。 id可以自己设置,将ID列设为自增长,然后如果全删除了,ID会从1开始自动增加。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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