日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(进阶篇_01)Oracle数据同步3种场景

發布時間:2024/9/27 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (进阶篇_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.json
2.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.json
3.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.json
4.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种场景的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。