我有一个拥有40亿条记录的Netezza数据库。我正在进行迁移项目以将数据移动到SQL Server。 我创建了一个简单的SSIS ETL,但由于缓冲区内存问题,它运行了很长时间并停止。 传输如此大量数据的有效方法是什么?
答案 0 :(得分:0)
您可以尝试将源数据分成批次,例如将1,000,000行(取决于您的内存)批量合并到Netezza表中。
DECLARE @BatchSize INT = 10000
WHILE 1 = 1
BEGIN
INSERT INTO [dbo].[Destination] --WITH (TABLOCK) -- Uncomment for 2008
(
FirstName
,LastName
,EmailAddress
,PhoneNumber
)
SELECT TOP(@BatchSize)
s.FirstName
,s.LastName
,s.EmailAddress
,s.PhoneNumber
FROM [dbo].[SOURCE] s
WHERE NOT EXISTS (
SELECT 1
FROM dbo.Destination
WHERE PersonID = s.PersonID
)
IF @@ROWCOUNT < @BatchSize BREAK
END