在@@ rowcount> 0时插入数据

时间:2015-08-21 15:22:34

标签: sql-server

我需要在不同数据库的同一个表之间插​​入海量数据。我想使用while@@rowcountinsert。这仅插入前10行(源表中有数百万行)。有什么想法吗?

DECLARE @date datatime 
SET @date = CURRENT_TIMESTAMP

SET @date = @date 
WHILE @@ROWCOUNT > 0
BEGIN
INSERT TOP (10) db2.dbo.tbl2 
select * FROM db1.dbo.tbl1
where coldate < @date
END

(10 row(s) affected)

(0 row(s) affected)

2 个答案:

答案 0 :(得分:0)

您可以尝试将源数据分解为每月批次,如此 -

DECLARE @date datatime 
SET @date = CURRENT_TIMESTAMP
DECLARE @i int = 0;

WHILE @@ROWCOUNT > 0
BEGIN
SET @date = dateadd(mm, @i, @date)

INSERT INTO db2.dbo.tbl2 
select * FROM db1.dbo.tbl1
where month(coldate) = month(@date)
and year(coldate) = year(@date)

SET @i = @i + 1
END

答案 1 :(得分:0)

如果表格中有任何IDENTITY列,那么您可以一次添加100万批次的条件。否则你可以创建100万批,选择TOP 100万从第一个数据库的表插入第二个Db的表&#34; NOT IN&#34;在第二个db表的where子句中。