Java 之集成 DataX 数据同步工具

1、官网下载 DataX
https://github.com/alibaba/DataX
在这里插入图片描述
2、将依赖添加到本地(DataX没有maven坐标,需要自己安装)

mvn install:install-file -Dfile="datax-common-0.0.1.jar" "-DgroupId=com.datax" "-DartifactId=datax-common" "-Dversion=0.0.1" "-Dpackaging=jar"
mvn install:install-file -Dfile="datax-core-0.0.1.jar" "-DgroupId=com.datax" "-DartifactId=datax-core" "-Dversion=0.0.1" "-Dpackaging=jar"

在这里插入图片描述
3、引入依赖

		<!-- datax --><dependency><groupId>com.datax</groupId><artifactId>datax-core</artifactId><version>0.0.1</version></dependency><dependency><groupId>com.datax</groupId><artifactId>datax-common</artifactId><version>0.0.1</version></dependency><dependency><groupId>commons-cli</groupId><artifactId>commons-cli</artifactId><version>1.2</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.60</version></dependency>

3、测试类

import com.alibaba.datax.core.Engine;
import lombok.extern.slf4j.Slf4j;@Slf4j
public class DataxDemo {public static void main(String[] args) throws Throwable {// datax.home中存放的 是datax工具的路径。// System.setProperty("datax.home", "E:\\datax"); 设置datax.home环境变量,在系统启动时会通过datax.home环境变量获取配置文件和read、writer数据量插件。System.setProperty("datax.home", "E:\\Develop\\datax\\datax");String jsonPath = "E:\\Gotion\\code2\\manager_platform_develop\\platform-admin\\src\\main\\resources\\datax";String[] datxArgs = {"-job", jsonPath + "/test.json", "-mode", "standalone", "-jobid", "-1"};try {// 启动DataXEngine.entry(datxArgs);} catch (Exception e) {log.error("DataX启动失败", e);}}//获取resource的路径public static String getCurrentClasspath() {ClassLoader classLoader = Thread.currentThread().getContextClassLoader();String currentClasspath = classLoader.getResource("").getPath();// 当前操作系统String osName = System.getProperty("os.name");if (osName.startsWith("Win")) {// 删除path中最前面的/currentClasspath = currentClasspath.substring(1, currentClasspath.length() - 1);}return currentClasspath;}
}

4、数据同步配置Json说明

{"job": {"setting": {"speed": {"channel": 1  // 根据实际情况调整并发通道数}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "",  // 源数据库用户名"password": "",  // 源数据库密码"column": ["*"],  // 要同步的列,使用*表示同步所有列"splitPk": "",  // 分片键"connection": [{"table": ["table_name"],  // 源表名"jdbcUrl": [""]  // 源数据库连接URL}]}},"writer": {"name": "mysqlwriter","parameter": {"username": "",  // 目标数据库用户名"password": "",  // 目标数据库密码"column": ["*"],  // 要写入的列,使用*表示写入所有列"preSql": ["delete from table"],  // 预处理SQL,用于清空目标表"session": ["set session sql_mode='ANSI'"],  // 数据库会话配置"connection": [{"table": ["table_name"],  // 目标表名"jdbcUrl": "" // 目标数据库连接URL}],"writeMode": "insert"  // 写入模式,可以是insert、replace、update等}}}]}
}

Json接收参数:

select t.id,t.name,t.status from users t where t.id=${id}
{"job": {"setting": {"speed": {"channel": 4}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","connection": [{"jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/test"],"querySql": ["select t.id,t.name,t.status from users t where t.id=${id}"]}]}},"writer": {"name": "mysqlwriter","parameter": {"username": "root","password": "123456","writeMode": "insert","column": ["id","name","status"],"connection": [{"table": ["temp_users"],"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/test"}]}}}]}
}

启动之前设置参数:

System.setProperty("id", "1");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24553.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…

Springboot基础篇(3):Bean管理

前言&#xff1a;Spring 通过扫描类路径&#xff08;Classpath&#xff09;来查找带有特定注解&#xff08;如 Component、Service、Repository 等&#xff09;的类&#xff0c;并将它们注册为 Spring 容器中的 Bean。 1 Bean扫描 Bean 扫描是 Spring 框架的核心功能之一&…

VidSketch:具有扩散控制的手绘草图驱动视频生成

浙大提出的VidSketch是第一个能够仅通过任意数量的手绘草图和简单的文本提示来生成高质量视频动画的应用程序。该方法训练是在单个 RTX4090 GPU 上进行的&#xff0c;针对每个动作类别使用一个小型、高质量的数据集。VidSketch方法使所有用户都能使用简洁的文本提示和直观的手绘…

Vulhub靶机 Apache APISIX Dashboard RCE(CVE-2021-45232)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动docker ps 查看开放的端口 影响范围 2.7 ≤ Apache APISIX Dashboard < 2.10.1 二、访问靶机IP 9080端口 1、下载利用脚本&#xff0c;并利用 https://github.com/wuppp/apisix_dashboard_rce 这里需要注意IP的端口为9000…

Python - Python连接数据库

Python的标准数据库接口为&#xff1a;Python DB-API&#xff0c;Python DB-API为开发人员提供了数据库应用编程接口。 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个实现库&#xff0c;Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&…

Windows 11【1001问】Windows 11 都有哪些版本?

随着Windows 11的普及&#xff0c;越来越多的用户开始关注其不同版本及其分支版本之间的差异。在此之前&#xff0c;我们已经通过一系列文章详细介绍了Windows 11的基本概念、硬件配置要求、系统镜像下载方法以及多种安装方式。从使用Rufus和UltraISO软碟通制作Windows 11系统安…

【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费

【Kimi】免费生成PPT并免费下载 用了好几个大模型&#xff0c;有些能生成PPT内容&#xff1b; 有些能生成PPT&#xff0c;但下载需要付费&#xff1b; 目前只有Kimi生成的PPT&#xff0c;能选择模板、能在线编辑、能下载&#xff0c;关键全部免费&#xff01; 一、用kimi生成PP…

【Java项目】基于Spring Boot的旅游管理系统

【Java项目】基于Spring Boot的旅游管理系统 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;旅游管理系统是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模块包括&#xff08;1&#xff09;首…

Deepseek开源周第三天:DeepGEMM发布

Deepseek开源周第三天&#xff1a;DeepGEMM发布 前言 上周deepseek宣布&#xff0c;将在本周陆续发布五个开源项目&#xff0c;这些库已经在生产环境中经过了记录、部署和实战测试。 今天是deepseek开源周的第三天&#xff0c;deepseek发布了一个名为 DeepGEMM 的项目&#x…

ALM研发管理:全新甘特图,让项目管理更高效

在软件开发领域&#xff0c;甘特图一直是项目管理的重要工具。通过可视化的任务时间线&#xff0c;清晰地展示项目的进度和关键时间节点&#xff0c;帮助团队成员快速理解项目状态&#xff0c;协调工作进度&#xff0c;从而有效提升项目管理的效率。无论是需求分析、设计、开发…

mac os 使用 root 登录

打开系统偏好设置。进入“用户与群组”面板。点按锁按钮输入密码&#xff0c;再点最下面的登录选项。在右边面板的下方你会看见一行字&#xff1a;”网络账户服务器&#xff1a;加入 ”&#xff0c;点击加入&#xff0c;就可以打开目录实用工具了。 添加Root用户 正常情况下目…

【C++笔记】C++11智能指针的使用及其原理

【C笔记】C11智能指针的使用及其原理 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C11智能指针的使用及其原理前言1.智能指针的使用场景分析2. RAII和智能指针的设计思路3. C标准库智能指针的使用4. 智能指针的原…

SQL命令详解之操作数据库

操作数据库 SQL是用于管理和操作关系型数据库的标准语言。数据库操作是SQL的核心功能之一&#xff0c;主要用于创建、修改和删除数据库对象&#xff0c;如数据库、表、视图和索引等。以下是SQL中常见的数据库操作命令及其功能简介&#xff1a; 1. 查询数据库 查询所有的数据库…

轨迹控制--odrive的位置控制---负载设置

轨迹控制 此模式使您可以平滑地使电机旋转&#xff0c;从一个位置加速&#xff0c;匀速和减速到另一位置。 使用位置控制时&#xff0c;控制器只是试图尽可能快地到达设定点。 使用轨迹控制模式可以使您更灵活地调整反馈增益&#xff0c;以消除干扰&#xff0c;同时保持平稳的运…

mysql.gtid_executed表、gtid_executed变量、gtid_purged变量的修改时机

1.2 mysql.gtid_executed表、gtid_executed变量、gtid_purged变量的修改时机 1.2.1 定义 mysql.gtid_executed表&#xff1a;GTID持久化的介质&#xff0c;GTID模块初始化的时候会读取这个表作为获取gtid_executed变量的基础。 gtid_executed变量&#xff1a;表示数据库中执行…

CONTACT 在 Ubuntu 系统中的安装与使用

CONTACT 概述 CONTACT 是研究三维摩擦接触问题的高级仿真程序&#xff0c;如轮轨之间、滚动轴承的接触问题。CONTACT 提供了完整且详细的解决方案&#xff0c;可集成到多体仿真软件中。其计算质量可与有限元分析相近&#xff0c;但计算时间仅为后者的千分之一。CONTACT 采用半…

C#连接sql server

连接时&#xff0c;出现如下提示&#xff1a; ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中&#xff0c;驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示&#xff1a; 显示为64位&#xff0c;而c#程序显…

数据结构之各类排序算法代码及其详解

1. 排序的概念 排序是一种常见的算法概念&#xff0c;用于将一组数据按照特定的顺序进行排列。排序算法的目的是将一组数据按照递增或递减的顺序重新排列。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。排序算法的选择通常取决于数据规模、数据分布…

山东大学软件学院人工智能导论实验之知识库推理

目录 实验目的&#xff1a; 实验代码&#xff1a; 实验内容&#xff1a; 实验结果 实验目的&#xff1a; 输入相应的条件&#xff0c;根据知识库推理得出相应的知识。 实验代码&#xff1a; def find_data(input_process_data_list):for epoch, data_process in enumerat…