• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

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

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

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

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


...全文
123 点赞 收藏 8
写回复
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开始自动增加。
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告