我有一个非常大的数据集,大约有4000万个数据项。我正在尝试将此加载到新表。由于数据集确实很大,因此我试图批量加载它们,因此日志事务将不满。我正在使用以下查询,但仍然存在日志事务已满的问题。
是否有一种方法可以在每批处理之后提交转换,以免将其保存到日志中并用于下一个批处理?
请让我知道我是否有解决此问题的方法。
SSIS目前不适合我。
DECLARE @I BIGINT;
DECLARE @icnt int;
DECLARE @n INT, @flag INT;
SELECT @icnt = (SELECT COUNT(*) FROM table1) A
PRINT @ICNT
BEGIN
SELECT @I = 0
WHILE @I <=@icnt
BEGIN
SELECT @n = 0
SELECT @flag = 1
BEGIN TRANSACTION
WHILE @flag != 0
BEGIN
;WITH A AS
(
SELECT
a.*,
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS batchnum
FROM
table1
)
INSERT INTO table2 (*)
SELECT *
FROM A
WHERE batchnum >= @I AND batchnum <@I + 10000000
SELECT @I = @I + 10000000
SELECT @n = @n + 10000000
SELECT @flag = CASE WHEN @n >= 50000000 THEN 0
WHEN @I >= @icnt THEN 0 ELSE 1 END
PRINT @I
END
COMMIT TRANSACTION
END
END