当前位置: 代码迷 >> Sql Server >> 大数据插入,详见描述解决思路
  详细解决方案

大数据插入,详见描述解决思路

热度:105   发布时间:2016-04-24 08:56:05.0
大数据插入,详见描述
A表: 3千W条数据。
B表:2.8千W条数据。

SELECT * FROM A表 WHERE  PROJ_ID=629    -- 有180W条数据。

把上面180W条数据插入到B表。 要怎么处理。请大侠帮忙 谢谢

目前提示:失败,出现超时过期。
------解决思路----------------------
建议分批插入,比如一次1000条,关于数据的过滤,那就看你的业务了
------解决思路----------------------
以我的经验,2005以上的话应该不会插入失败
1检查硬件性能
2删除索引
------解决思路----------------------
SSIS导入?
------解决思路----------------------
做数据备份转移时,我以前也是这样执行过插入、删除,一张表数据量大的时候,可能一次需要3-4个小时时间执行,也不会出现超时。如果是数据量实在太大,可以考虑按ID,或者时间分成若干次操作

要考虑一下是否有主键冲突的数据
------解决思路----------------------
大数据就不能“加起来导入”,应该“各自分批导入”。
一边生成数据一边导入就不存在“从2.8千W 中找出  200W条”的问题了。
------解决思路----------------------
分批写入,每次 一万行,180 个循环也就完事了。
------解决思路----------------------


之前在测试环境删除过数据,如果一次删除 会很慢,这个慢有很多方面,通过分批 很明显的加快了速度,另外 PROJ_ID上的索引页很重要,这样可以加快查找速度。

但是,插入分批 就不一定提高性能了。
还有个问题是 如何分批,因为删除的话比较好分批处理,但是插入的话 就要有个标记 标明 哪些已经插入,哪些还没有插入。
------解决思路----------------------

我觉得可否试一下这个方法,首先用ssis 导出A表的指定数据到txt文件,然后再导入到 B表,这样速度应该会快一点。
------解决思路----------------------

另外,你的超时 可能是你设置了查询超时的时间了吧
  相关解决方案