我需要在不同数据库的同一个表之间插入海量数据。我想使用while
,@@rowcount
,insert
。这仅插入前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)
答案 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子句中。