1. 程式人生 > >GoldenGate中使用strcat和strext進行資料轉換

GoldenGate中使用strcat和strext進行資料轉換

在OGG中可以對源欄位的內容進行合併或拆分,從而實現類似於“ETL”的功能。
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 (
[email protected]
("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 (
[email protected]
(@STREXT(ssid,1,3),"-",@STREXT(ssid,4,6),"-",@STREXT(ssid,7,9) ));

可以看到,使用strcat, strext可以很容易的實現在實時資料同步時,進行簡單的資料轉換,從而實現部分ETL功能。

相關推薦

GoldenGate使用strcatstrext進行資料轉換

在OGG中可以對源欄位的內容進行合併或拆分,從而實現類似於“ETL”的功能。 strcat(s1,s2,s3,,,):用於合併字串; strext(str, start, end):用於獲取指定位置的字串。 示例如下: 源端myphone表,2個欄位: SQL> d

javastringint的相互轉換

integer chan 也會 tee tex 什麽 產生 chang details java中string和int的相互轉換 int -> String int i=12345;String s="";核心:s=i+""; String -> int s="

Python日期時間進行操作timedatetime

Python中提供了多個用於對日期和時間進行操作的內建模組:time模組、datetime模組和calendar模組。其中time模組是通過呼叫C庫實現的,所以有些方法在某些平臺上可能無法呼叫,但是其提供的大部分介面與C標準庫time.h基本一致。time模組相比,datetime模組提供的介面更直

使用unittestddt進行資料驅動

1、安裝ddt #pip install ddt 2、解除安裝ddt     # coding = utf-8 # encoding = utf-8 import ddt import time import unittest import logging im

Java如何使用Json進行格式轉換常用方法

首先要在pom.xml檔案加入以下一依賴,這是阿里巴巴的開源格式轉換技術 <dependency>     <groupId>com.alibaba</groupId>     

java對字串進行資料轉換

//對提交的字串進行非法字元的過濾 public String CheckReplace(String s) { try { if ((s == null) || (s.equals(""))) return ""; StringBuffer stringbuffer

1.使用spoon進行資料轉換,抽取過程如下,,,,大資料元件之ETL

轉換過程如下: 2018/11/19 17:03:43 - Spoon - Using legacy execution engine 2018/11/19 17:03:43 - areacheckdaily - 轉換已經從資源庫預先載入. 2018/11/19 17:03:43 - Sp

JavaStringbyte[]間的轉換淺析

Java語言中字串型別和位元組陣列型別相互之間的轉換經常發生,網上的分析及程式碼也比較多,本文將分析總結常規的byte[]和String間的轉換以及十六進位制String和byte[]間相互轉換的原理及實現。 1. String轉byte[] 首先我們來分析一下常規的Strin

javaNaNInfinity基本資料型別包裝類(double,Double)

java浮點數運算中有兩個特殊的情況:NAN、INFINITY。 1、INFINITY: 在浮點數運算時,有時我們會遇到除數為0的情況,那java是如何解決的呢? 我們知道,在整型運算中,除數是不能為0的,否則直接執行異常。但是在浮點數運算中,引入了無

Java8 DateLocalDateTime的相互轉換

一.在Java 8中將Date轉換為LocalDateTime 方法1: 將Date轉換為LocalDatetime,我們可以使用以下方法: 1.從日期獲取ZonedDateTime並使用其方法toLocalDateTime()獲取LocalDateTime 2.使用L

Spark RDDDataSet之間的轉換

什麼是RDD:Spark提供了一個抽象的彈性分散式資料集,是一個由叢集中各個節點以分割槽的方式排列的集合,用以支援平行計算。RDD在驅動程式呼叫hadoop的檔案系統的時候就建立(其實就是讀取檔案的時候就建立),或者通過驅動程式中scala集合轉化而來,使用者也可以用spar

利用R語言的dplyr包進行資料轉換

library(tidyverse) library(nycflights13) #利用該包中的flights資料 flights #### R語言中的變數型別 # int——整數型變數 # dbl——雙精度浮點數型變數,或稱實數 # chr——字串 # dttm——日期時間型變數 # l

spark高階資料分析系列之第二章用 Scala Spark 進行資料分析

2.1資料科學家的Scala spark是用scala語言編寫的,使用scala語言進行大資料開發的好處有 1、效能開銷小 減少不同環境下傳遞程式碼和資料的錯誤和效能開銷 2、能用上最新的版

JavaStringInt類相互轉換的方法

String Sch_No = "1707020410"; int output = Integer.parseInt(Sch_No); 這樣就將學號“1707020410” 轉換成了純數字1707020410   其他的也是類似的 double d = Double.p

python在lxml使用XPath語法進行#資料解析

在lxml中使用XPath語法: 獲取所有li標籤: from lxml import etree html = etree.parse('hello.html') print type(html) # 顯示etree.parse() 返回型別 result = html.xpath('//li')

C++static_castdynamic_cast強制型別轉換

轉載地址:http://blog.csdn.net/qq_26849233/article/details/62218385 一、static_cast關鍵字(編譯時型別檢查) 用法:static_cast < type-id > (expression

Oracledatetimestamp之間的轉換

前幾天,gf的專案中用到了timestamp型別欄位,轉換了幾次,都報錯,今天有時間,就把date與timestamp型別的轉換做以測試,總結如下: 一、首先說下date和timestamp的不同吧。 大家知道,date型別能夠儲存月,年,日,世紀,時,分和秒,而經常的格式

Extjsgrid採用json進行資料繫結的例項

剛開始學習extjs,真是摸不著頭呀。 做了半天才搞出一個grid顯示資料。在網上找了個數據做了個測試。 一下是程式碼。 首先:把ext-3.1.0資料夾放到根目錄下。 新建一個Default.aspx。 view plaincopy to clipboardprint?&l

EclipseJSPJavaScript進行Copy卡死,問題解決

在Eclipse中編輯JSP檔案時,對文字字元進行復制和貼上時,很卡,主要原因是Eclipse中增加了一些JSP和Javascript的校驗,將這些校驗去掉基本上就可以了,具體的如下所示: Window -> Preference -> General -&g

使用poi只能判斷20032007進行資料讀取

import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.ut