GoldenGate中使用strcat和strext进行数据转换
strcat(s1,s2,s3,,,):用于合并字串;
strext(str, start, end):用于获取指定位置的字串。
示例如下:
源端myphone表,2个字段:
SQL> desc myphone
Name Null? Type
----------------------------------------- -------- ----------------------------
AREA_CODE NUMBER
PHONE_NO NUMBER
目标端myphone表,只有一个字段:
SQL> desc myphone
Name Null? Type
----------------------------------------- -------- ----------------------------
PHONE_NO VARCHAR2(30)
因此目标表在接收到数据之后,我们可以将2个字段合并为一个,前面加上“0”,字段间使用“-”连接,表示一个完整的电话号码。
源端OGG捕获及传输进程:
extract ext
userid ggs_owner, password ggs_owner
rmthost venom , mgrport 7809
rmttrail ./dirdat/gg
table ggs_owner.myphone;
目标端投递进程:
REPLICAT rep
sourcedefs ./dirsql/myphone.sql
USERID ggs_owner, PASSWORD ggs_owner
MAP ggs_owner.myphone, TARGET ggs_owner.myphone,
COLMAP (phone_no=@STRCAT("0",area_code,"-",phone_no));
启动两个进程并在源端插入一些数据,源端:
SQL> select * from myphone;
AREA_CODE PHONE_NO
---------- ----------
8 92471136
4 17213124
2 818188
目标端:
SQL> select * from myphone;
PHONE_NO
------------------------------
08-92471136
04-17213124
02-818188
可以看到字段已经按我们的要求进行合并。
针对字段拆分:
源端:
SQL> select * from myssid;
SSID
----------
123456787
123456788
123456789
将SSID表的9位数字投递到目标端时拆分成如下格式:
SQL> select * from myssid;
SSID
--------------------
123-456-787
123-456-788
123-456-789
我们需要在目标端进程如下配置:
REPLICAT rep
sourcedefs /export/home/oracle/gg/dirsql/myssid.sql
USERID ggs_owner, PASSWORD ggs_owner
MAP ggs_owner.myssid, TARGET ggs_owner.myssid,
COLMAP (ssid=@STRCAT(@STREXT(ssid,1,3),"-",@STREXT(ssid,4,6),"-",@STREXT(ssid,7,9) ));
可以看到,使用strcat, strext可以很容易的实现在实时数据同步时,进行简单的数据转换,从而实现部分ETL功能。
GoldenGate中使用strcat和strext进行数据转换的更多相关文章
- 关于Oracle GoldenGate中Extract的checkpoint的理解 转载
什么是checkpoint? 在Oracle 数据库中checkpoint的意思是将内存中的脏数据强制写入到磁盘的事件,其作用是保持内存中的数据与磁盘上的数据一致.SCN是用来描述该事件发生的准确的时 ...
- 模拟一下goldengate中断后,重新同步操作
模拟一下goldengata中断后,重新同步操作: 1.关掉源端抽取进程 GGSCI (20081122-2105) 15> info all Program Status ...
- Android中如何将Bitmap byte裸数据转换成Bitmap图片int数据
Android中如何将Bitmap byte裸数据转换成Bitmap图片int数据 2014-06-11 10:45:14 阅读375次 我们在JNI中处理得到的BMP图片Raw数据,我们应该如何 ...
- Oracle GoldenGate中HANDLECOLLISIONS参数使用详解
Oracle GoldenGate中HANDLECOLLISIONS参数使用详解 HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用.在 ...
- GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令
本文主要介绍OGG中一些过滤或计算函数的用法,以及sqlexec的基本用法 SQLPREDICATE 在使用OGG初始化时,可以添加此参数到extract中,用于选择符合条件的记录,下面是OGG官方文 ...
- 【翻译自mos文章】在Oracle GoldenGate中循环使用ggserr.log的方法
在OGG中循环使用ggserr.log的方法: 參考原文: OGG How Do I Recycle The "ggserr.log" File? (Doc ID 967932.1 ...
- C\C++ 中的 strcat() 函数 —— 字符串的插入、拼接
转载链接:http://blog.csdn.net/smf0504/article/details/52055971 函数原型 extern char *strcat(char *dest,char ...
- c#中读取数据库bit布尔字段数据转换Int和bool时的错误
数据库里bit这个布尔类型的字段,非常实用,但是在c#里读取时,许多人喜欢犯一些错误,导致运行报错. 实际中,有效的正确读取方法只有以下两种: int xxx= Convet.ToInt16(read ...
- java中如何将byte[]里面的数据转换成16进制字符串
原文链接: http://zhidao.baidu.com/link?url=RmLDjr4PtP_oUE5J2pKNZSvlHt1K7HcCh4-03Y7VkXYhJ0kawg01CtKHZc2uB ...
随机推荐
- opencl初探-sobel检测
sobel检测的C版本,neon和GPU的时间比较. Platform: LG G3, Adreno 330 ,img size 3264x2448 sobel: C code neon GPU 73 ...
- ajax views
https://julian.pustkuchen.com/en/drupal-7-api-trigger-views-ajax-refresh-javascript-or-php-using-aja ...
- assert的用处
ASSERT函数是用于调试中,也就是说在你的代码中当是Debug的时候它完成对参数的判断,如果是TRUE则什么都不做,如果是FALSE则弹出一个程序中断对话框提示程序出现错误.在Release版本中它 ...
- Sql Server中通配符的使用
Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...
- Android屏幕适配原理
几个概念: 1) 屏幕密度(dpi) :dot per inch,即每英寸像素数. ldpi(120),mdpi(160),hdpi(240),xhdpi(320) 计算方法: 以480x854,4. ...
- MySQL通用优化手册
转载: MySQL通用优化手册 内容提纲 MySQL的特点: 硬件.系统优化: MySQL 配置优化: SCHEMA设计优化: SQL 优化: 其他优化. MySQL 的特点 首先,需要明确的是.想要 ...
- Disney English
项目大体流程是做几个页面的模板,然后后台用html改成phtml 但是后期连模板都要改掉,很多都无法考虑到复用 css很混乱,js已经忘记了
- Android 编程下的代码混淆
什么是代码混淆 Java 是一种跨平台的.解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中.由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名.方法名,并且通 ...
- Eclipse创建第一个springWebMVC项目
1.第一步:配置中央调度器(DispatcherServlet) 2.第二步:配置处理器(Controller) 3.第三步:在applicationContext.xml文件中注册控制器 注:记得头 ...
- 使用strace工具故障排查的5种简单方法
使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...