文章目录
- 一、场景分析
- 二、实战
- 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