从BOL:
-n
执行使用数据的本机(数据库)的数据类型的大容量复制操作。该选项不会提示每个字段;它使用本地值。
数十亿行?那么你也将要使用:
的batch_size -b
指定每批数据中复制的行数。每个批次都作为一个事务复制到服务器。 SQL Server在失败的情况下提交或回滚每个批次的事务。
您不能一次访问两个数据库,可能是通过链接服务器?这会让事情变得更容易。
DECLARE @StartId BIGINT
DECLARE @NmbrOfRecords BIGINT
DECLARE @RowCount BIGINT
SET @StartId = 0
SET @NmbrOfRecords = 9999
SET @RowCount = 1
WHILE @RowCount > 0
BEGIN
BEGIN TRANSACTION
INSERT INTO DestinationDatabase.dbo.Mytable
SELECT * FROM SourceDatabase.dbo.Mytable
WHERE ID BETWEEN @StartId AND @StartId + @NmbrOfRecords
SET @RowCount = @@ROWCOUNT
SET @StartId = @StartId + @NmbrOfRecords + 1
COMMIT TRANSACTION
END
来源
2012-03-15 00:01:21
Wim
您的数据流有点不清楚,您的意思是将数据加载到您的应用程序中是什么意思?是否正确,您将从SQL Server导出到平面文件,然后将该平面文件加载到您的应用程序中?它会将数据加载到内存中,还是将它作为流从文件中处理?从SQL Server导出数据或将其加载到应用程序时,性能问题是否存在? – Pondlife 2012-03-15 08:50:46