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

一、场景分析

单表单表同数据同步

字段数量和字段类型一致有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.json


2021-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.json

2021-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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gblfy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值