sqlserver2000同一数据库的表之间的数据复制问题

时间:2021-04-28 07:03:45
我用的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

6 个解决方案

#1


如果你的规则是铁定的,那么直接insert into B select * from A where id between and 这样的格式,把每批的语句全部放入一个存储过程里面一次性执行。

#2


描述有问题吧? a复制到b ,脚本怎么是b复制到a。 复制为啥要一行一行的进行 ,不能全部一次搞定?

#3


有没有行号?有行号就简单
insert into a(x,y,z,e) select x,y,z,e from b where not exists (select top 2 * from b order by 行号)

#4


第3行到第33行的数据,再从第36行到第66行

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

#5


引用 1 楼  的回复:
如果你的规则是铁定的,那么直接insert into B select * from A where id between and 这样的格式,把每批的语句全部放入一个存储过程里面一次性执行。

规则是根据读的文件产生的,二进制流文件,我试试这个方法,谢谢

#6


问题按照发愤图强的方法解决了,谢谢各位了,结贴发分

#1


如果你的规则是铁定的,那么直接insert into B select * from A where id between and 这样的格式,把每批的语句全部放入一个存储过程里面一次性执行。

#2


描述有问题吧? a复制到b ,脚本怎么是b复制到a。 复制为啥要一行一行的进行 ,不能全部一次搞定?

#3


有没有行号?有行号就简单
insert into a(x,y,z,e) select x,y,z,e from b where not exists (select top 2 * from b order by 行号)

#4


第3行到第33行的数据,再从第36行到第66行

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

#5


引用 1 楼  的回复:
如果你的规则是铁定的,那么直接insert into B select * from A where id between and 这样的格式,把每批的语句全部放入一个存储过程里面一次性执行。

规则是根据读的文件产生的,二进制流文件,我试试这个方法,谢谢

#6


问题按照发愤图强的方法解决了,谢谢各位了,结贴发分