在本机SQL中对大型INSERT操作进行批量提交?

前端之家收集整理的这篇文章主要介绍了在本机SQL中对大型INSERT操作进行批量提交?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有几个大表(188米和144米行)我需要从视图中填充,但每个视图包含几亿行(将伪维度建模数据拉到一个平面形式).每个表上的键超过50个复合字节的列.如果数据在表中,我总是可以考虑使用sp_rename来创建另一个新表,但这不是一个真正的选择.

如果我执行单个INSERT操作,该进程会使用大量的事务日志空间,典型地将其归档并引发一些DBA的麻烦. (是的,这可能是DBA应该处理/设计/架构师的工作)

我可以使用SSIS并使用批量提交将数据流式传输到目标表中(但这确实需要通过网络传输数据,因为我们不允许在服务器上运行SSIS包).

除了使用某种键将行分配到多个INSERT操作以将行分配到不同的批次并进行循环之外的任何其他事情?

解决方法

您可以对数据进行分区并在游标循环中插入数据.这与SSIS batchinserting几乎相同.但是在你的服务器上运行.
create cursor ....
select YEAR(DateCol),MONTH(DateCol) from whatever

while ....
    insert into yourtable(...)
    select * from whatever 
    where YEAR(DateCol) = year and MONTH(DateCol) = month
end

猜你在找的MsSQL相关文章