1.简介:
多种数据库数据互导 同步工具
为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。
2.框架设计
- Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
- Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
- Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
3.工作原理
4.前置要求:
JDK
Python 安装python 略
5.运行自检:
D:\JobSoftware\DataX\datax\bin>python datax.py D:\JobSoftware\DataX\datax\job\job.json
发现中文乱码
设置窗口为utf8: chcp 65001
2020-10-02 15:33:10.750 [job-0] INFO JobContainer - PerfTrace not enable!
2020-10-02 15:33:10.754 [job-0] INFO StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.015s | All Task WaitReaderTime 0.021s | Percentage 100.00%
2020-10-02 15:33:10.755 [job-0] INFO JobContainer -
任务启动时刻 : 2020-10-02 15:33:00
任务结束时刻 : 2020-10-02 15:33:10
任务总计耗时 : 10s
任务平均流量 : 253.91KB/s
记录写入速度 : 10000rec/s
读出记录总数 : 100000
读写失败总数 : 0
6.使用实例: 将oracle数据库 ggxx_csb 表导入到 mysql表中
python datax.py -r oraclereader -w mysqlwriter
1) 在mysql数据库中建表
create table GGXX_CSB
(
PARAVALUE VARCHAR(30) not null,
PARADESC VARCHAR(45),
PARANAME VARCHAR(8) not null
)
2)编写json脚本
{
"job": {
"setting": {
"speed": {
"channel":"1"
}
},
"content": [
{
"reader": {
"name": "oraclereader",
"parameter": {
"column" : ["*"],
"connection":[
{
"jdbcUrl":["jdbc:oracle:thin:@192.168.11.53:1521:creditgr"],
"table":["ggxx_csb"]
}
],
"password":"grzx_byday",
"username":"grzx_byday"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column":["*"],
"connection":[
{
"jdbcUrl":"jdbc:mysql://192.168.11.60:3306/hy_test",
"table":["ggxx_csb"]
}
],
"password":"root",
"username":"root",
"writeMode":"insert"
}
}
}
]
}
}
3)执行脚本
D:\JobSoftware\DataX\datax\bin>python datax.py D:\JobSoftware\DataX\datax\job\jobtest.json
4)查看可以看到mysql中数据已经插入
注:中文乱码问题是因为字符集不一致 此处就不做处理了
7.使用pycharm运行py文件
1)pycharm安装 略
2)配置
3)运行成功