日期:2014-05-17  浏览次数:20610 次

sqlserver2000同一数据库的表之间的数据复制问题
我用的sqlserver2000数据库,现在我在一个数据库中创建两张表,其中表a为暂存数据的表,意思就是我会把外部数据先导入表a,在表a中转换为标准格式,然后我再把表a中的第3行到第33行的数据,再从第36行到第66行,以此类推,直到表尾的数据抽取出来复制到表b中,我写了一个循环需要的时间天长了,完全复制需要1分多钟。求高手帮忙解决一下,或是给个好的建议也行,我写的sql语句如下:
declare @i int
set @i = 1
while @i <= 512
begin
declare @j int
set @j=3
while @j< 33
begin
  insert into a(x,y,z,e) select x,y,z,e from b where u_identity = @j+@i*32
set @j=@j+1
end
set @i=@i+1
end

------解决方案--------------------
如果你的规则是铁定的,那么直接insert into B select * from A where id between and 这样的格式,把每批的语句全部放入一个存储过程里面一次性执行。
------解决方案--------------------
描述有问题吧? a复制到b ,脚本怎么是b复制到a。 复制为啥要一行一行的进行 ,不能全部一次搞定?
------解决方案--------------------
有没有行号?有行号就简单
SQL code
insert into a(x,y,z,e) select x,y,z,e from b where not exists (select top 2 * from b order by 行号)

------解决方案--------------------
第3行到第33行的数据,再从第36行到第66行

这么有个性的取法 那只能慢慢等了,慢不重要,你又不是京城取