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