日期:2014-05-17  浏览次数:20395 次

大批量数据库插入
有两个基础数据表

映射表
ID       映射ID
XXX       111
YYY       222
ZZZ       333

详细表
ID      name
XXX      鞋子
ABC      衣服
YYY      电脑
ZZZ      书籍

每天都有大概非常多条详细表的数据进入到数据库(每天大概有500W条),我需要对详细表做一些清洗做分析用(ID 在映射表中没有的不要),让里面的数据copy到另外一个数据表里面

分析表

映射ID     name
111      鞋子
222      电脑
333      书籍
.....

用作业每天晚上执行上面的操作,我想用 insert into  select  操作,但是一次插入500W条数据会不会让数据库崩溃,或者说效率低下呢? 这种情况我应该怎么处理? 


  

------解决方案--------------------
引用:
  
没有压力的情况下倒不至于奔溃掉,不过你这个需求可以用SSIS来实现啊,已经算比较典型的ETL过程了

弱弱的问下,用SQL 作业处理这样的工作和你说的 “SSIS,ETL”有啥区别?


SSIS比较常用的背景是在BI的ETL过程,区别我也一时间说不了,但是BI这种大数据量抽取一般都会选择用SSIS而不用作业。
------解决方案--------------------
可以考虑采用SSIS实现,难度不大,如楼主这个映射表,可以合理使用SSIS中的Cache Transform(缓存转换),可减少数据库的负荷。
学习SSIS可以参考<SSIS学习视频(SQL Server 2008)>:
http://www.cnblogs.com/wghao/archive/2013/05/06/3061984.html