大批量数据库插入
有两个基础数据表
映射表
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