etl如何做:目标表中没有的就添加,有的就更新,目标表中有而源表中没有的就删除

clear_zero 2012-06-19 07:14:56

我现在想达到的目的是
目标表中没有的就添加,有的就更新,目标表中有而源表中没有的就删除

我看到merge语句可以做到,但是不知道写在哪。etl里面哪个模块可以把merge写进去呢?我都是拖拽的

多谢 多谢
...全文
1065 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
天善智能 2014-06-07
  • 打赏
  • 举报
回复
Merge into可以实现。SSIS里面的查找控件 也可以实现。。。。时间戳也可以啦,就是增量更新啦
siegebaoniu 2014-06-03
  • 打赏
  • 举报
回复
把source数据全部拉到本地,然后在脚本里面实现三种功能,有主键就行。 插入和更新可以写Merge,但删除,貌似只能全表去比主键了。
longfy1818 2014-06-02
  • 打赏
  • 举报
回复
只是想执行merge语句很简单,直接在ETL上拖一个“执行 SQL 任务”过来即可。
anhuidyk 2014-01-26
  • 打赏
  • 举报
回复
可以在脚本组件里面做处理
wdnaraku 2014-01-17
  • 打赏
  • 举报
回复
引用 10 楼 clear_zero 的回复:
[quote=引用 9 楼 wdnaraku 的回复:] [quote=引用 楼主 clear_zero 的回复:] …… 目标表中没有的就添加,有的就更新,目标表中有而源表中没有的就删除 ……
挖个坟,被雅琪姐顶楼的逻辑吸引过来的,这不就完全是用source替换target吗? sql server我不懂,不过oracle不用merge语法而写存储过程的话思路如下: 1. 将target存在source不存在数据备份(create t_backup as select * from target where not exist(select 1 from source where target.id=source.id)); 2. 清空target 3. 合并source+备份导入target 注意备份和rollback 我不是dba,方案好不好不清楚,这么做是因为oracle中update比较耗时 [/quote] 这样做的话会丢失一些列的值,不是所有都替换哈,比如上一次写入的时候会有个timestamp,如果删掉重来那时间咋办。 另外如果数据大的话这样时间是不是比较长?[/quote] 原来如此,我还是回去看你的八卦贴吧
clear_zero 2014-01-16
  • 打赏
  • 举报
回复
引用 9 楼 wdnaraku 的回复:
[quote=引用 楼主 clear_zero 的回复:] …… 目标表中没有的就添加,有的就更新,目标表中有而源表中没有的就删除 ……
挖个坟,被雅琪姐顶楼的逻辑吸引过来的,这不就完全是用source替换target吗? sql server我不懂,不过oracle不用merge语法而写存储过程的话思路如下: 1. 将target存在source不存在数据备份(create t_backup as select * from target where not exist(select 1 from source where target.id=source.id)); 2. 清空target 3. 合并source+备份导入target 注意备份和rollback 我不是dba,方案好不好不清楚,这么做是因为oracle中update比较耗时 [/quote] 这样做的话会丢失一些列的值,不是所有都替换哈,比如上一次写入的时候会有个timestamp,如果删掉重来那时间咋办。 另外如果数据大的话这样时间是不是比较长?
wdnaraku 2014-01-16
  • 打赏
  • 举报
回复
引用 楼主 clear_zero 的回复:
…… 目标表中没有的就添加,有的就更新,目标表中有而源表中没有的就删除 ……
挖个坟,被雅琪姐顶楼的逻辑吸引过来的,这不就完全是用source替换target吗? sql server我不懂,不过oracle不用merge语法而写存储过程的话思路如下: 1. 将target存在source不存在数据备份(create t_backup as select * from target where not exist(select 1 from source where target.id=source.id)); 2. 清空target 3. 合并source+备份导入target 注意备份和rollback 我不是dba,方案好不好不清楚,这么做是因为oracle中update比较耗时
clear_zero 2012-06-19
  • 打赏
  • 举报
回复
两个流搞定了,感谢msdn阿

有没有好的方法呢?merge一下子就可以了。我能不能写过一个script,其中target和source是两个可以在安装时设置的变量;然后再我的script里面直接用

坐等好办法

谢谢你的帮助
clear_zero 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

如果一个流做不出来,是否可用两个数据流?Source和target分别做源
[/Quote]

正在尝试,但是不太会弄。lookup 找不match的没有成功。没反应
liangCK 2012-06-19
  • 打赏
  • 举报
回复
如果一个流做不出来,是否可用两个数据流?Source和target分别做源
clear_zero 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

不是也是一个源,一个目标吗?
[/Quote]

你说的对,是一个源。我看错了,它实现了有则更新,无则添加;但是没有实现target有而source无的情况下删除target

你知道这个怎么实现么?


谢谢
liangCK 2012-06-19
  • 打赏
  • 举报
回复
不是也是一个源,一个目标吗?
clear_zero 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

http://blog.csdn.net/zjcxc/article/details/1202876
[/Quote]
这个我看过了,里面有两个source一个target;我只有一个source一个target;是source 和 target之间的对比,然后更新target

觉得不会改zj的
liangCK 2012-06-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/zjcxc/article/details/1202876
liangCK 2012-06-19
  • 打赏
  • 举报
回复
可以使用查找组件
可以参考邹建老大的blog
数据库设计说明书 版本:V1.0 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 录 1 引言 1 1.1 编写目的 1 1.2 系统名称及版本号 1 1.3 电子文档编写工具 1 1.4 定义说明与符号 1 1.5 参考资料 1 2 概述 1 3 命名 1 4 实体域设计 2 4.1 担保物 2 4.2 贷款申请 2 5 表模型设计 2 5.1 聚合表Package 2 5.2 xxx Package 2 5.2.1 CDBEC_PM_CONTROL_RECORD (表) 3 5.3 系统管理 3 5.3.1 运行日志 3 5.3.2 系统代码表 3 6 物理设计 3 6.1 数据视图 3 6.2 存储空间规划 3 6.3 冗余设计 3 6.4 索引设计 4 7 数据组织 4 7.1 数据分布方式 4 7.2 数据传输与通讯 4 7.3 历史数据管理 4 7.4 数据量估计 4 引言 编写目的 本文档是对xxx项目数据库模型的概要设计,是进行CDM模型设计的基础。 系统名称及版本号 系统全称: 系统简称: 电子文档编写工具 【说明】工具名、版本号、操作系统平台。使用多种工具时,应分别说明。 Microsoft Office Word Professional Edition 2003 Microsoft Office Visio Professional Edition 2003 Sybase PowerDesigner® Version 9.5 定义说明与符号 【说明】包括对专用术语及缩略语的解释、所用到的图(物理数据模型图/功能层次图/逻辑框图/流程图等)中图符的表示与解释、屏幕界面中图标与按钮的表示与含义等。 参考资料 【说明】格式:作者,[版本号],资料来源,日期,[起止页号]。其中,《软件需求规格说明书》与《软件概要设计说明书》是必选的参考资料。 概述 模型域划分【说明】数据模型的整体划分原则,分多少个package,为什么如此划分: Package KM临时数据:用于接收KM平移过来的数据 Package 上报数据:按照上报系统的要求存储数据,供修改界面使用 命名 参照《开发银行数据平台命名规范》【说明】项目所引用的规范 项目空间CDBEC 【说明】项目所需建立的schema,如果有多个,要说明各自的用途 表前缀: 数据接收表 STA_【说明】依据规范罗列出本系统所需建立的表前缀 数据存储表 DT_ 系统管理表 SM_ 上报报文数据表 MS_ 上报过程管理表 PM_ 实体域设计 【说明】要确定模型设计的方式:星型、雪花,对于分析应用,可以按照主题域的方式进行实体域的设计 担保物 【说明】 1.从概要层次说明每类实体所反映的业务信息关系,说明实体域有多少实体。 2.通过PowerDesigner 出实体间的主从关系,主从的数据关系及约束关系 3.在CDM模型中对字段进行解释 贷款申请 表模型设计 聚合表Package 【说明】说明聚合原因,聚合的依赖关系及层次。 xxx Package 【说明】每类package设计的原则 设计该系列表的目的是将数据复制到本地数据库后再进行计算,提高计算速度。如果未来使用数据ETL工具,虽然可以在抽取的过程中就完成大量的计算操作,但是考虑到这种工作方式需要相关系统都在线的情况下才能进行计算处理,对开发调试的环境要求较高,并且在上线运行后如果出现故障,还需要相关系统调整到位的情况下才能重新运行,因此在源到目标的数据移动过程中不进行复杂的数据运算,并且在本地保留接口数据表。 按照计算中需要从KM获取的数据表和数据项内容,进行设计,实现数据的简单平移。该部分模型需要参照目前有效发放系统、Symbols系统的表结构、命名、数据类型。 因为上报中要求对变更进行上报,当采集系统不能提供变更情况时,需要上报系统根据当天数据和前一次存储的数据进行比较之后才能知道发生了哪些业务变更。因此本系列的表需要对上报的数据保存本期和两期的数据。 CDBEC_PM_CONTROL_RECORD (表) 【说明】有特殊设计原因的表的用途,辨别此类表的方法:非业务数据存储表、实体域间的关联表、或设计规范中没有定义过的。注意不是简单解释字段的含义,而是要说明未来的系统如何使用这张表,以及表的变化更新情况 存储上报数据的概要汇总信息,每条上报数据在本表中有一条对应的存储记录。该表供查询界面中进行摘要信息显示,系统根据摘要记录再进行后续过程的处理。 在每天数据导入系统后,由系统向此表添加新的需要上报的数据。在xxx情况下该记录将被删除。…… 【说明】在CDM模型中对字段进行解释 系统管理 【说明】除了说明表的用途外,还要说明按照设计规范中的要求引用了哪些标准 运行日志 系统代码表 物理设计 数据视图 【说明】数据库视图、同义词、物化视图、DBLink的建设原因,并阐述是否存在性能问题 存储空间规划 【说明】 1.估算系统的初始数据量,增长量及周期,初始数据空间需求 2.是否建立独立的表空间,索引空间,临时表空间,使用的表空间名称 3.是否需要分区存储,哪些表进行分区存储,分区方案 冗余设计 【说明】 1.说明什么情况下进行了哪些数据项的冗余设计及原因 2.说明冗余设计后保证数据一致性的方案,如要求应用系统同步多处修改,还是系统提供变更服务 索引设计 【说明】 说明主键以外的索引原因 数据组织 数据分布方式 【说明】如集中式、分布式、混合式(集中+分布)。用图表予以描述。【说明】采用表格方式,应与数据量分布表对应。形如: 子系统名: 实体名 保存期限(天) 存放位置 CDBKM CDBFR 广域网服务器 数据传输与通讯 历史数据管理 【说明】 历史数据管理方式:备份磁带、备份表、删除 历史数据检索方式、数据恢复方式 历史数据操作方案 数据量估计 【说明】使用表格+文字的方式,对每个子系统进行估计。形如: 子系统名: 实体名 数据总量(KB) … … 本子系统数据总量= 占空系数= 预计数据量= 这里,预计数据量=本子系统数据总量×占空系数 其中,占空系数表示实际开销与理论开销之比值。其值可根据具体项目及运行环境而定,如可取1.5至2.5。
推荐算法系统ETL数据处理实战 :一、课程优势本课程有陈敬雷老师的清华大学出版社配套新书教材《分布式机器学习实战》人工智能科学与技术丛书,新书教材配合此实战课程结合学习,一静一动,互补高效学习!本课程由互联网一线知名大牛陈敬雷老师全程亲自授课,技术前沿热门,是真正的互联网工业级实战项目。二、课程简介       搭建完数据仓库和平台之后,我们日常很多工作会数据处理,也就是ETLETL分全量和增量两种处理方式,在推荐系统占用的工作量是比较大的,一个算法系统,ETL数据处理的也是必须的。 下面来讲讲推荐的ETL数据处理是如何的?我让我们体验下真实的用户实战场景!三、老师介绍陈敬雷  充电了么创始人,CEO兼CTO陈敬雷,北京充电了么科技有限公司创始人,CEO兼CTO,十几年互联网从业经验,曾就职于用友、中软、凡客、乐蜂网(唯品会)、猎聘网、人民日报(灵思云途)、北京万朝科技,曾任架构师、首席技术官、首席科学家等职务,对业务领域B端、C端、电商、职场社交招聘、内容文娱、营销行业都有着丰富的经验,在技术领域,尤其在大数据和人工智能方向有丰富的算法工程落地实战经验,其中在猎聘网任职期间主导的推荐算法系统项目获得公司优秀项目奖,推荐效果得到5倍的提升。 陈敬雷著有清华大学出版社两本人工智能书籍,分别是《分布式机器学习实战(人工智能科学与技术丛书)》已出版、《自然语言处理原理与实战(人工智能科学与技术丛书)》。 目前专注于大数据和人工智能驱动的上班族在线教育行业,研发了充电了么app和网站,用深度学习算法、nlp、推荐引擎等技术来高效提升在线学习效率。 

588

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧