DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

GitHub方式:https://github.com/alibaba/DataX

直接点击这里进行下载

注意: dataX需要在 jdk1.8 Python2.0 以上运行
查询jdk

# java -version

查询Python

# python --version
  1. 我把刚刚下载的压缩文件放在了/usr/local/datax在这里插入图片描述
  2. 解压到/opt/software
# tar -zxvf datax.tar.gz -C /opt/software

三、验证解压

# bin/datax.py job/job.json

安装完成。

这里我以从SqlServer数据库中的一张表数据同步到MySQL中为例讲解一下数据同步功能。

一、datax.py

首先需要说明一下这里的操作原理,建议看一下方便理解。如果想直接实操的可以跳过【一、】这个步骤。

在刚刚我们执行的# bin/datax.py job/job.json命令中分为两个步骤,第一个是启动名为datax.pyPython脚本。第二个是通过datax.py脚本来执行一个job.json文件。

datax.py脚本就不多说了,大家可以打开自己看看。主要我们要知道的是job.json文件,该文件也是我们用于进行数据同步功能的主要配置文件。

job.json文件内容:

"content":[ "reader":{ "name":"streamreader", "parameter":{ "column":[ "type":"string", "value":"DataX" "type":"long", "value":19900604 "type":"date", "value":"1990-06-04 00:00:00" "type":"bool", "value":true "type":"bytes", "value":"test" "sliceRecordCount":100000 "writer":{ "name":"streamwriter", "parameter":{ "encoding":"UTF-8", "print":false "setting":{ "errorLimit":{ "percentage":0.02, "record":0 "speed":{ "byte":10485760

解析(个人理解,非官方语言)

content: 一个执行同步的单元,里面包含读与写操作。
writer: 写操作的配置信息
reader:读操作的配置信息
parameter: 读操作中的数据源
sliceRecordCount:读取的数据条数
name:官方描述为数据插件。其实就是使用每一种类型数据库时调用的包也是GitHub页面中这些插件包。
在这里插入图片描述
咱们现在使用的就是我标红的这两个,如果需要使用其他数据源比如MySQL和SqlServer,就需要替换相对应的插件包,我们可以在GitHub中找到该包的写入与写出代码

speed:这里面有个channel 参数为整数,代表并发数量
在这里插入图片描述

setting: 对上面执行单元的基本设置

看完上面配置文件的解释大家应该可以明白,数据同步的规则就是配置一个读入数据源一个写出数据源,执行之后即可进行数据同步。

二、准备数据

  1. 在一个SqlServer中创建数据名称为datax_read

在这里插入图片描述
ps:这张表中ID需要为主键

  1. 在一个MySQL中创建一个结构相同的表

三、编写job.json文件

  1. 回到用户文件下创建json文件夹
    在这里插入图片描述2. 进入json文件夹创建steamSqlServerMysql.json
    在这里插入图片描述
    内容如下(账号密码地址请替换成你自己的数据库):
"job": { "content": [{ "reader": { "name": "sqlserverreader", "parameter": { "username": "root", "password": "root", "column": [ "ID", "WTDBH" "splitPk": "ID", "connection": [{ "table": [ "ERP_CGDD" "jdbcUrl": [ "jdbc:sqlserver://172.16.156.200:1433;DatabaseName=datax_read" "writer":{ "name": "mysqlwriter", "parameter": { "writeMode": "insert", "username": "root", "password": "root", "column": [ "ID", "WTDBH" "session": [ "set session sql_mode='ANSI'" "preSql": [ "delete from erp_cgdd" "connection": [ "jdbcUrl": "jdbc:mysql://172.16.156.201:3306/datax_writer?useUnicode=true&characterEncoding=utf-8", "table": [ "erp_cgdd" }], "setting": { "speed": { "channel": "1"

SqlServer读取插件中字段的解释:点击这里

MySQL写入插件中字段的解释:点击这里

四、执行同步操作

# /opt/software/datax/bin/datax.py ./steamSqlServerMysql.json

数据同步功能完成!

java通过调用Python脚本执行DataX

原理实际上没区别,直接用java输入刚刚自己在命令行中输入的命令即可

下面代码是java执行Linux命令

try {
            String[] cmd = new String[] { "/bin/sh", "-c", "/opt/software/datax/bin/datax.py ./steamSqlServerMysql.json" };
            Process ps = Runtime.getRuntime().exec(cmd);
            BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line).append("\n");
            String result = sb.toString();
            logger.info(result);
        } catch (Exception e) {
            logger.error("----error-----");
            e.printStackTrace();

如果觉得有帮助的话给个免费的点赞吧,Thanks♪(・ω・)ノ

Maxwell:异构数据源实时同步工具 文章目录Maxwell:异构数据源实时同步工具1、概述2、原理解析2.1 Mysql主从复制3、Maxwell安装部署4、增量数据同步5、历史数据全量同步5.1 Maxwell-bootstrap ​ Maxwell:实时监控Mysql数据库数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。 ​ Maxwell的工作原理是实时读取MySQL数据库的二进制日志(B
一、dataX概览 1.1 DataX DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 1.2 Features DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX
如果想实现增量同步,就需要使用where和数据库中的时间字段来判断近期添加和修改的代码。 如果需要修改已有行数据,如果写入数据库mysql,可以把写入模式改为update 但是公司需要使用sqlserver数据库,该插件对sqlserver不支持writeMode,所示使用sqlserver提供的触发器。判断当前id是否存
DataX 安装及使用 文章目录DataX 安装及使用一、DataX快速入门1.1、DataX概述及安装**概述**DataX安装配置1.2、DataX使用案例 一、DataX快速入门 1.1、DataX概述及安装 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、 Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、 MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步
DataX安装及使用 文章目录DataX安装及使用DataX安装DataX的使用stream2stream编写配置文件stream2stream.json执行同步任务执行结果mysql2mysql编写配置文件mysql2mysql.json执行同步任务mysql2hdfs编写配置文件mysql2hdfs.jsonhbase2mysqlmysql2hbasemysql2Phoenix在Phoenix中创建STUDENT表编写配置文件MySQLToPhoenix.jsonHDFSToHBase DataX
在新系统中设置定时任务需要实时把客户系统中的新数据及时同步过来。 1.根据客户提供的接口(参数上必带页码和页面容量),在本系统中采用Http的Post请求方式获取接口数据。 2.由于客户提供的接口必带页码和页面容量,因此会涉及到 1.设置定时任务。 2.采用Http的Post方式获取接口数据。 3.涉及多页数据采用递归方 方法一、直接下载DataX工具包:DataX下载地址 下载后解压至本地某个目录,进入bin目录,即可运行同步作业: $ cd {YOUR_DATAX_HOME}/bin $ python datax.py {YOUR_JOB.json} 自检脚本:    python {YOUR_DATAX_HO SpringBoot升级2.4.0所出现的问题:When allowCredentials is true, allowedOrigins cannot contain the specia 62738
SpringBoot升级2.4.0所出现的问题:When allowCredentials is true, allowedOrigins cannot contain the specia 是路, sir 。: 把“s”去掉 就好了 简简单单实现一个大文件分片上传+断点续传(java springboot+vue vue-simple-uploader) HappyEveryA: 您好 我想问下大佬 文件上传完成前端onFileSuccess没有收到完成是什么原因啊 求解表情包 简简单单实现一个大文件分片上传+断点续传(java springboot+vue vue-simple-uploader) ACcoding: 您好,我现在做大文件上传,后续程序会部署到linux服务器,这些分片数据应该存储在哪里呢?也是static路径吗?可以存到固定的路径下面吗?比如/opt/这种目录下 element-ui表格中文字中含<br>进行换行 勤勉的乌龟: 帮大忙,了感谢 java使用Hutool功具,完成基本的对xml,XML文本字符串的新增节点数据,修改节点数据,查询节点数据(很详细哦!) 建行一世: