Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2561416
  • 博文数量: 245
  • 博客积分: 4125
  • 博客等级: 上校
  • 技术积分: 3113
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-25 23:56
文章分类

全部博文(245)

文章存档

2015年(2)

2014年(26)

2013年(41)

2012年(40)

2011年(134)

2010年(2)

分类: 数据库开发技术

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表(已发送email234,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)

已发送email234,050

原始未发送email:3,884,544

原始未发送去重复后email:2,532,904

原始未发送去重复去已发送后email:2,447,985

 

 

阅读(1461) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~