分类: 数据库开发技术
2011-07-07 09:11:24
PROBLEM:
已发送的email地址(send.txt),未发送到email地址(needsend1.txt~needsend9.txt)。其中needsend*.txt中可能存在冗余,needsend*.txt中可能存在已经发送到email。其中send.txt中有近30万条记录。needsend*.txt中有380多万条记录。
SOLUTION:
STEP1:首先,进行ETL,将平面文件源needsend*.txt分别进行【排序】,然后【Union All】,再导入Ole Db数据目标email表(原始未发送email:3,884,544)。采用类似的方法,将send.txt中的数据也导入Ole DB数据目标old_email表(已发送email:234,050)。
STEP2:去掉原始未发送中的重复记录,得到原始未发送去重复的记录放在new_email表中(2,532,904原始未发送去重复)
INSERT INTO new_email(email)
SELECT DISTINCT email FROM email
STEP3:通过比较已发送表old_email中的Email和原始未发送去重复表new_email中的email,将实际需要发送的Email放在need_send_email表中。
insert into need_send_email(email)
select email from new_email where email not in(
select email from old_email)
已发送email:234,050
原始未发送email:3,884,544
原始未发送去重复后email:2,532,904
原始未发送去重复去已发送后email:2,447,985