在本机SQL中对大型INSERT操作进行批量提交?
发布时间:2020-12-12 06:54:59 所属栏目:MsSql教程 来源:网络整理
导读:我有几个大表(188米和144米行)我需要从视图中填充,但每个视图包含几亿行(将伪维度建模数据拉到一个平面形式).每个表上的键超过50个复合字节的列.如果数据在表中,我总是可以考虑使用sp_rename来创建另一个新表,但这不是一个真正的选择. 如果我执行单个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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |