informatica 数据库之间的多表数据同步(全量/增量)以及variable的使用问题
来源:互联网 发布:怎么向淘宝网投诉 编辑:程序博客网 时间:2024/05/22 23:59
两个数据库之间的多表数据同步(增量或全量)
中间有一张control table 表结构大概为
table_name varchar(200),
load_flag int,
利用load_flag来控制需要同步的表
flag为1 则同步
flag为0 则不同步
实现方法为 用一个mapping 将flag为1 的表名过滤出来,在把这些表名 首位加上特殊字符 再一个个拼接起来
如 ~table1~table2~table3~
然后赋值给$$v_flag ,mp中的变量可以定义长度,因为有很多表所以$$v_flag的长度一定要很长,建议1000以上。
wf中通过这个session将$$v_flag传到后面的session,进行判断该表名是否在变量中instr($$v_flag,'~table_name~'),如果为真则说明这个表需要同步,否则就不执行session
session
fact表需要按照时间戳进行增量抽取
用parameter file建立两个时间戳变量$$StartDate,$$EndDate
在SQL Qurey中写SQL进行过滤
select * from table where date between '$$StartDate' and '$$EndDate'
workflow
在实际运用的过程中发现:
当表的数量不多的时候,wf可以正常运行没有问题
但是在将所有表进行同步之后,发现有好几张表没有数据,查看log发现,$$V_flag并没有把所有的表名放进去,然后去计算了一下$$v_flag的字符串长度,发现长度为600。但实际所有表名连起来的长度要不止600。
检查了mp,里面的变量长度都是足够的,而wf中无法指定变量的长度,F1里也没有详细的说明。
Google了一下发现的确也有很多人说 wf 的变量长度最大就是600,那我就对mp和wf做了改善
首先因为wf里面的worklet是按照db来分的
所以我在control table中再加一列
table_db varchar(100),
用于记录这张表是在哪一个库里面
然后第一个mp中按照table_db进行分类筛选
将同一个库下的表名对应一个变量
所以有几个库,就有几个$$v_flag
再传入后面的session中,这样wf里也要和mp中的变量同步
把表名按照db来分割,传入各自对应的worklet中进行判断
这样就有效避免了wf变量不够长的问题
阅读全文
0 0
- informatica 数据库之间的多表数据同步(全量/增量)以及variable的使用问题
- 使用Logstash-input-jdbc同步数据库中的数据(全量 和 增量)
- 数据库增量同步(二台SQL Server服务器的数据库之间增量传输数据)(jaime原创)
- 中间表同步方案(全量,增量)
- solr全量导入/增量导入mysql的数据
- Solr之Mysql数据库全量、增量同步-yellowcong
- 增量and全量数据同步项目总结
- Sqoop全量和增量导入数据到Oracle数据库
- 转:solr 从数据库导入数据,全量索引和增量索引(实例&配置&原理)
- 利用INFORMATICA实现增量数据的抽取与加载
- MySQL数据库之全量+增量+二进制日志的备份与恢复
- Mysql的数据备份类型——物理备份与逻辑备份,全量与增量
- 在两个ORACLE数据库之间实现数据增量同步
- jdbc操作 数据库做同步,全量+增量,线程控制,批处理
- db2 全量+增量备份数据
- 实现两个数据库之间的数据同步
- 不同Oracle数据库之间的数据同步
- MySql的全量备份和增量备份及还原
- java-逻辑运算符
- 软键盘管理
- 如何设置win7多用户远程控制登录
- java前端技术---javaScript使用详解(基础篇)
- git remote常见用法
- informatica 数据库之间的多表数据同步(全量/增量)以及variable的使用问题
- Spring Boot 启动时执行加载资源/执行操作
- bzoj 2301 [HAOI2011]Problem b
- Java 日期比较
- 1.Android的构成基石-四大组件之Activity
- 腾讯地图转换成百度地图坐标
- python 安装包国内源
- 多线程-按顺序放(按顺序取执行结果)
- spring-boot-starter