(进阶篇_01)Oracle数据同步3种场景
文章目錄
- 一、場景分析
- 二、實戰
- 2.1. 創建原表表結構+初始化數據
- 2.2. 創建目標表表結構
- 2.3. 同步前效果圖
- 2.4. 連接串
- 2.5. 執行同步
- 2.6.執行后效果圖
- 2.7.操作記錄
- 三、實戰場景2(第1種)
- 3.1. 原表表結構+初始化數據
- 3.2. 目標表表結構
- 3.3. 連接字符串
- 3.4. 數據同步前效果圖
- 3.5. 數據同步命令
- 3.6. 數據同步后效果圖
- 3.7. 操作記錄
- 四、實戰場景2(第2種)
- 4.1. 原表表結構+初始化數據
- 4.2. 目標表表結構
- 4.3. 連接字符串
- 4.4. 數據同步前效果圖
- 4.5. 數據同步命令
- 4.6. 數據同步后截圖
- 4.7. 數據同步操作記錄
一、場景分析
單表單表同數據同步
字段數量和字段類型一致有2種情況:
第1種:oracle 原表和目標表 表名稱一樣,原表和目標表的字段數量以及字段類型一致。
第2種:oracle 原表和目標表 表名稱不一樣,原表和目標表的字段數量以及字段類型必須一致。
字段不一致有2種情況:
第一種:oracle 原表和目標表 名稱一樣,也可以不一樣,但是,原表和目標表字段數量可以不一致,原表字段比目標表的字段數少。
第二種:oracle 原表和目標表 名稱一樣,也可以不一樣,但是,原表和目標表字段數量可以不一致,原表字段比目標表的字段數多。
二、實戰
字段數量和字段類型一致有2種情況:
第1種:oracle 原表和目標表 表名稱一樣,原表和目標表的字段數量以及字段類型一致。
第2種:oracle 原表和目標表 表名稱不一樣,原表和目標表的字段數量以及字段類型必須一致。
2.1. 創建原表表結構+初始化數據
ORACLE使用批量插入100萬測試數據
https://gblfy.blog.csdn.net/article/details/113556382
2.2. 創建目標表表結構
CREATE TABLE test_data (ID varchar2(32),NAME1 varchar2(9),NAME2 varchar2(100),NAME3 varchar2(100) ); COMMENT ON TABLE test_data IS '測試表';2.3. 同步前效果圖
原表1000000條數據
SELECT count(*) FROM test_data;2.4. 連接串
#格式:cd {YOUR_DATAX_HOME}/job cd /app/datax/dca/job vim oracle-base.json內容如下:
{"job": {"content": [{"reader": {"name": "oraclereader","parameter": {"column": ["*"],"connection": [{"jdbcUrl": ["jdbc:oracle:thin:@ip地址:1521:數據庫名稱"],"table": ["用戶(大寫).${originTableName}"]}],"password": "用戶名","username": "密碼"}},"writer": {"name": "oraclewriter","parameter": {"column": ["*"],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@ip地址:1521:數據庫名稱","table": ["用戶(大寫).${targetTableName}"]}],"password": "用戶名","username": "密碼"}}}],"setting": {"speed": {"channel": "2"}}} }2.5. 執行同步
#格式:python {YOUR_DATAX_HOME}/bin/datax.py -p"-DoriginTableName='目標表名' -DtargetTableName='原表名'" {YOUR_DATAX_HOME}/job/oracle2oracle-oldCS.json; python /app/datax/bin/datax.py -p"-DoriginTableName='TEST_DATA' -DtargetTableName='TEST_DATA'" /app/datax/job/dca/oracle-base.json2.6.執行后效果圖
原表
目標表
2.7.操作記錄
[root@localhost job]# python /app/datax/bin/datax.py -p"-DoriginTableName='TEST_DATA' -DtargetTableName='TEST_DATA'" /app/datax/job/dca/oracle-base.json2021-02-02 17:30:19.114 [job-0] INFO JobContainer - PerfTrace not enable! 2021-02-02 17:30:19.114 [job-0] INFO StandAloneJobContainerCommunicator - Total 1000000 records, 37555584 bytes | Speed 3.58MB/s, 100000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 6.049s | All Task WaitReaderTime 1.829s | Percentage 100.00% 2021-02-02 17:30:19.115 [job-0] INFO JobContainer - 任務啟動時刻 : 2021-02-02 17:30:08 任務結束時刻 : 2021-02-02 17:30:19 任務總計耗時 : 10s 任務平均流量 : 3.58MB/s 記錄寫入速度 : 100000rec/s 讀出記錄總數 : 1000000 讀寫失敗總數 : 0[root@localhost job]#三、實戰場景2(第1種)
字段不一致有2種情況:
第一種:oracle 原表和目標表 名稱一樣,也可以不一樣,但是,原表和目標表字段數量可以不一致,原表字段比目標表的字段數少。
3.1. 原表表結構+初始化數據
DROP table HERO;-- Create table create table HERO (SNO VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE NUMBER(3),PRIMARY KEY (SNO) ); -- Add comments to the table comment on table HERO is '英雄信息表';-- Add comments to the columns comment on column HERO.SNO is '英雄編碼'; comment on column HERO.USER_NAME is '英雄名稱'; comment on column HERO.AGE is '英雄年齡';insert into HERO (SNO, USER_NAME, AGE) values ('1', '蓋倫', '1'); insert into HERO (SNO, USER_NAME, AGE) values ('2', '小丑', '2'); insert into HERO (SNO, USER_NAME, AGE) values ('3', '莫甘娜', '3'); insert into HERO (SNO, USER_NAME, AGE) values ('4', '寒冰', '4'); insert into HERO (SNO, USER_NAME, AGE) values ('5', '劍圣', '5'); insert into HERO (SNO, USER_NAME, AGE) values ('6', '劍圣', '6');3.2. 目標表表結構
DROP table HERO;-- Create table create table HERO (SNO VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE NUMBER(3),LLMEDSERIALNO VARCHAR2(20),MAKEDATE DATE,MAKETIME VARCHAR2(8),PRIMARY KEY (SNO) );-- Add comments to the table comment on table HERO is '英雄信息表';-- Add comments to the columns comment on column HERO.SNO is '英雄編碼'; comment on column HERO.USER_NAME is '英雄名稱'; comment on column HERO.AGE is '英雄年齡';3.3. 連接字符串
vim oracle-more.json {"job": {"content": [{"reader": {"name": "oraclereader","parameter": {"where": "","connection": [{"querySql": ["select a.*, (ROWNUM+72500072689218919812) LLMEDSERIALNO, to_date('2021-1-4','yyyy-mm-dd') MAKEDATE, to_char(SYSDATE,'hh24:mi:ss') MAKETIME from 用戶大寫.${originTableName} a where 1=1"],"jdbcUrl": ["jdbc:oracle:thin:@ip地址:1521:數據庫名稱"],}],"password": "用戶名","username": "密碼"}},"writer": {"name": "oraclewriter","parameter": {"column": ["*"],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@ip地址:1521:數據庫名稱","table": ["用戶大寫.${targetTableName}"]}],"password": "用戶名","username": "密碼"}}}],"setting": {"speed": {"channel": "1"}}} }3.4. 數據同步前效果圖
3.5. 數據同步命令
python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-more.json3.6. 數據同步后效果圖
原表
目標表
3.7. 操作記錄
[root@localhost job]#python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-more.json2021-02-02 18:07:06.575 [job-0] INFO JobContainer - PerfTrace not enable! 2021-02-02 18:07:06.575 [job-0] INFO StandAloneJobContainerCommunicator - Total 6 records, 241 bytes | Speed 24B/s, 0 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 100.00% 2021-02-02 18:07:06.576 [job-0] INFO JobContainer - 任務啟動時刻 : 2021-02-02 18:06:56 任務結束時刻 : 2021-02-02 18:07:06 任務總計耗時 : 10s 任務平均流量 : 24B/s 記錄寫入速度 : 0rec/s 讀出記錄總數 : 6 讀寫失敗總數 : 0四、實戰場景2(第2種)
字段不一致有2種情況:
第二種:oracle 原表和目標表 名稱一樣,也可以不一樣,但是,原表和目標表字段數量可以不一致,原表字段比目標表的字段數多。
4.1. 原表表結構+初始化數據
DROP table HERO;-- Create table create table HERO (SNO VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE NUMBER(3),LLMEDSERIALNO VARCHAR2(20),MAKEDATE DATE,MAKETIME VARCHAR2(8),PRIMARY KEY (SNO) );-- Add comments to the table comment on table HERO is '英雄信息表';-- Add comments to the columns comment on column HERO.SNO is '英雄編碼'; comment on column HERO.USER_NAME is '英雄名稱'; comment on column HERO.AGE is '英雄年齡';insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('1', '蓋倫', '1', '72500072689218919813', '2021-01-04', '18:18:25'); insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('2', '小丑', '2', '72500072689218919814', '2021-01-04', '18:18:25'); insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('3', '莫甘娜', '3', '72500072689218919815', '2021-01-04', '18:18:25'); insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('4', '寒冰', '4', '72500072689218919816', '2021-01-04', '18:18:25'); insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('5', '劍圣', '5', '72500072689218919817', '2021-01-04', '18:18:25'); insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('6', '劍圣', '6', '72500072689218919818', '2021-01-04', '18:18:25');4.2. 目標表表結構
DROP table HERO;-- Create table create table HERO (SNO VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE NUMBER(3),PRIMARY KEY (SNO) );-- Add comments to the table comment on table HERO is '英雄信息表';-- Add comments to the columns comment on column HERO.SNO is '英雄編碼'; comment on column HERO.USER_NAME is '英雄名稱'; comment on column HERO.AGE is '英雄年齡';4.3. 連接字符串
vim oracle-short.json {"job": {"content": [{"reader": {"name": "oraclereader","parameter": {"where": "","connection": [{"querySql": ["select a.SNO,a.USER_NAME,a.AGE from 用戶大寫.${originTableName} a where 1=1"],"jdbcUrl": ["jdbc:oracle:thin:@ip地址:1521:數據庫名稱"],}],"password": "用戶名","username": "密碼"}},"writer": {"name": "oraclewriter","parameter": {"column": ["*"],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@ip地址:1521:數據庫名稱","table": ["用戶大寫.${targetTableName}"]}],"password": "用戶名","username": "密碼"}}}],"setting": {"speed": {"channel": "1"}}} }4.4. 數據同步前效果圖
4.5. 數據同步命令
python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-short.json4.6. 數據同步后截圖
原表
目標表
4.7. 數據同步操作記錄
[root@localhost dca]# python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-short.json 2021-02-02 18:27:18.498 [job-0] INFO JobContainer - PerfTrace not enable! 2021-02-02 18:27:18.499 [job-0] INFO StandAloneJobContainerCommunicator - Total 6 records, 25 bytes | Speed 2B/s, 0 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 100.00% 2021-02-02 18:27:18.499 [job-0] INFO JobContainer - 任務啟動時刻 : 2021-02-02 18:27:07 任務結束時刻 : 2021-02-02 18:27:18 任務總計耗時 : 10s 任務平均流量 : 2B/s 記錄寫入速度 : 0rec/s 讀出記錄總數 : 6 讀寫失敗總數 : 0總結
以上是生活随笔為你收集整理的(进阶篇_01)Oracle数据同步3种场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查询某一支接口,指定时间段的数据 按分钟
- 下一篇: Flowable 数据库表结构 ACT_