我想一次将50,000条记录插入sql server database 2000。如何做到这一点?
答案 0 :(得分:5)
您可以使用SELECT TOP子句:在MSSQL 2005中,它被扩展,允许您使用变量来指定记录数(旧版本只允许数字常量)
您可以尝试这样的事情: (未经测试,因为我目前无法访问MSSQL2005)
begin
declare @n int, @rows int
select @rows = count(*) from sourcetable
select @n=0
while @n < @rows
begin
insert into desttable
select top 2000 *
from sourcetable
where id_sourcetable not in (select top (@n) id_sourcetable
from sourcetable
order by id_sourcetable)
order by id_sourcetable
select @n=@n+2000
end
end
答案 1 :(得分:0)
你的意思是进行某种测试吗?
declare @index integer
set @index = 0
while @index < 50000
begin
insert into table
values (x,y,z)
set @index = @index + 1
end
但我希望这不是你的意思。
如果您指的是批量插入的最佳方式,请使用BULK INSERT
或bcp
答案 2 :(得分:0)
您是以编程方式还是从平面文件中插入另一个db / table?
答案 3 :(得分:0)
可以使用外部数据源bcp导入数据。 -b开关允许您指定批量大小。
答案 4 :(得分:0)
将@rows声明为int 设置@rows = 1 而@rows&gt; 0
insert mytable (field1, field2, field3)
select top 2000 pa.field1, pa.field2, pa.field3
from table1 pa (nolock)
left join mytable ta (nolock)on ta.field2 = pa.feild2
and ta.field3 = pa.field3 and ta.field1 = pa.field1
where ta.field1 is null
order by pa.field1
设置@rows = @@ rowcount
端
这是我们目前在SQL Server 2000中生产的代码,其中表和字段名已更改。
答案 5 :(得分:0)
使用SQL 2000,我可能依靠DTS来执行此操作,具体取决于数据的位置。您可以专门告诉DTS用于批量提交大小的内容。否则,SQL 2005批处理解决方案的修改版本会很好。我不认为你可以在SQL 2000中使用TOP和变量。