「DataX」数据迁移-IDEA运行DataX方法总结
背景
业务需求希望把Oracle数据库中的数据,迁移至MySql数据库中,因为需要迁移全量和增量的数据,所以希望想用数据迁移工具进行操作。
经过一些调研查询,最终打算使用DataX进行数据的迁移。
DataX简单介绍
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
项目搭建
环境配置
jdk:1.8
IDEA:2023.2
1.clone源代码
DataX源码地址:https://github.com/alibaba/DataX
这里可以用各自习惯的方式,进行clone源代码至项目中,然后打开项目,等待依赖下载完成。如果这里导入太慢,可以在maven里的settings.xml配置阿里云的镜像地址,如下:
<id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf>
</mirror>
2.编译打包源码
可以用IDEA中的maven工具进行编译打包源码,clean(清理),package(打包)

等待编译打包完成,可以在项目文件目录/core下方生成了一个target文件夹主要是需要用下方datax里面的内容。

也可以复制出来放在桌面上(地址:/Users/用户名/Desktop/datax[MacOS地址,win可以自行使用文件夹地址]),将打包后的文件提取出来,待后续配置配置完成,可移植至迁移源服务器上用python进行运行,这样就无需放一个大项目在服务器上进行运行。
3.配置编译后的包
可以看到文件夹下方的包目录结构如下图:

我们需要首先修改conf文件夹下的core.json配置,修改里面的core.transport.speed.byte,只要不为-1即可,值可以任意写,比如把byte设置为2000000,表示单个通道的大小更改为2MB

4.修改任务配置
打开datax文件夹下方的job文件夹,打开job.json文件,这里最重要的是reader和writer,这两分别代表了读数据库配置和写数据库配置
最开始看到的job示例任务,用到了streamreader和streamwriter插件,这是流数据的读和写插件,DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,所以可以根据我们自己的需求配置对应的插件。首先先在datax文件目录下,新建一个plugin目录

然后需要修改任务配置和添加对应插件组件,拿需要从Mysql数据库迁移到另一Mysql数据库举例,需要配置mysqlreader和mysqlwriter两个插件
回到工程,在maven中找到mysqlreader和mysqlwriter,然后也使用上方的方法进行打包,将打包出来的reader和writer文件复制到datax-plugin路径下


然后修改job.json文件配置上对应的数据库地址,账号密码等相关信息。
具体配置方式可参考官网https://github.com/alibaba/DataX 数据源参考指南
修改后配置文件如下

5.配置运行环境
回到IDEA项目中,DataX的启动项路径在src/main/java/com/alibaba/datax/core/Engine.java类,然后可以在IDEA的右上角进行配置启动文件

然后需要添加一个VM options配置,添加方式如下

添加后,需要配置以下三项即可:
| 配置项 | 配置内容 | 描述 |
|---|---|---|
| VM options | -Ddatax.home=/Users/用户名/Desktop/datax | datax编译后存放的地址 |
| Program arguments | -mode standalone -jobid -1 -job /Users/用户名/JavaProject/DataX/core/src/main/job/job.json | 运行的json文件路径 |
| JRE | 1.8 | 官方建议使用jdk1.8 |
ps:这里我用的是IDEA里面的job文件,运行的组件是桌面上的组件,大家可以都更改为IDEA中的内容,如果跟我一样的话,需要注意要把需要用到的组件打包到桌面datax-plugin文件夹中
6.启动项目
运行IDEA项目中的Engine,看到没有报错,即完成了数据迁移

失败的数据量和迁移成功的数据量也分别在读写失败总数和读出数据总数中有所描述
ps:如果用python进行执行的话,可以在data/bin路径下,执行操作python3 datax.py ../job/job.json
具体操作如下

总结
这次只是在需求的背景下,简单的接触了下数据迁移,若有更好的办法或者有问题的地方大家可以随意评论,也非常感谢杨林伟博主的文章介绍,让我在操作的途中少走许多坑,大家也可以看看下方的文章,希望对大家有所帮助。
相关链接
dataX官方地址
DataX教程(02)- IDEA运行DataX完整流程
相关文章:
「DataX」数据迁移-IDEA运行DataX方法总结
背景 业务需求希望把Oracle数据库中的数据,迁移至MySql数据库中,因为需要迁移全量和增量的数据,所以希望想用数据迁移工具进行操作。 经过一些调研查询,最终打算使用DataX进行数据的迁移。 DataX简单介绍 DataX 是阿里云 DataW…...
【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 过滤器:实现请求的预处理与后处理
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、过滤器&…...
DeepSeek与浏览器自动化AI Agent构建指南
文章使用到的模型可以用硅基流动中的: 注册链接:硅基流动统一登录 邀请码:FytHp9Xa 一、技术选型阶段 1. 基础组件选择 AI模型:DeepSeek-R1开放API(对话/推理)或DeepSeek-Coder(代码生成&#…...
面试中常问的mysql数据库指令【杭州多测师_王sir】
数据库中的修改表结构、增删改查、用户权限操作DDL 》数据库定义语言 create database,create table drop tableDML 》数据库操作语言 insert into,delete from,update set,DQL 》数据库查询语言 select .... from....crea…...
深度学习驱动的智能化革命:从技术突破到行业实践
第一章 深度学习的技术演进与核心架构 1.1 从浅层网络到深度学习的范式转变 深度学习的核心在于通过多层次非线性变换自动提取数据特征,其发展历程可划分为三个阶段:符号主义时代的规则驱动(1950s-1980s)、连接主义时代的浅层网络(1990s-2000s)以及深度学习时代的端到端…...
基于编译器特性浅析C++程序性能优化
最近在恶补计算机基础知识,学到CSAPP第五章的内容,在这里总结并且展开一下C程序性能优化相关的内容。 衡量程序性能的方式 一般而言,程序的性能可以用CPE(Cycles Per Element)来衡量,其指的是处理每个元素…...
服务器上通过ollama部署deepseek
2025年1月下旬,DeepSeek的R1模型发布后的一周内就火了,性能比肩OpenAI的o1模型,且训练成本仅为560万美元,成本远低于openAI,使得英伟达股票大跌。 下面我们来看下如何个人如何部署deepseek-r1模型。 我是用的仙宫云的…...
Android Coil总结
文章目录 Android Coil总结概述添加依赖用法基本用法占位图变形自定义ImageLoader取消加载协程支持缓存清除缓存监听 简单封装 Android Coil总结 概述 Coil 是一个用于 Android 的 Kotlin 图像加载库,旨在简化图像加载和显示的过程。它基于 Kotlin 协程࿰…...
《安富莱嵌入式周报》第351期:DIY半导体制造,工业设备抗干扰提升方法,NASA软件开发规范,小型LCD在线UI编辑器,开源USB PD电源,开源锂电池管理
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV16C95YEEZs 《安富莱嵌入式周报》第351期:DIY半导体…...
Redis在人员管理系统中的应用示例
用户会话管理 场景:用户登录后存储会话信息,支持多服务器共享 实现: 用户登录成功后,生成唯一Token(如JWT),作为Redis的Key Value存储用户ID、角色、权限等信息,设置过期时间&…...
The Wedding Juicer POJ - 2227
采取从外层边界,一步一步向内部拓展的策略,具体来说,一开始将最外面一层的点加入队列,并标记这些点的坐标已经被访问 取出队列中高度最低的点,将其弹出,查看其上下左右的点,如果新点没有被访问…...
# 深入理解RNN(一):循环神经网络的核心计算机制
深入理解RNN:循环神经网络的核心计算机制 RNN示意图 引言 在自然语言处理、时间序列预测、语音识别等涉及序列数据的领域,循环神经网络(RNN)一直扮演着核心角色。尽管近年来Transformer等架构逐渐成为主流,RNN的基本原理和思想依然对于理…...
分布式锁—6.Redisson的同步器组件
大纲 1.Redisson的分布式锁简单总结 2.Redisson的Semaphore简介 3.Redisson的Semaphore源码剖析 4.Redisson的CountDownLatch简介 5.Redisson的CountDownLatch源码剖析 1.Redisson的分布式锁简单总结 (1)可重入锁RedissonLock (2)公平锁RedissonFairLock (3)联锁MultiL…...
同步 Fork 仓库的命令
同步 Fork 仓库的命令 要将您 fork 的仓库的 main 分支与原始仓库(fork 源)同步,您可以使用以下命令: 首先,确保您已经添加了原始仓库作为远程仓库(如果尚未添加): git remote add…...
基于PySide6的CATIA零件自动化着色工具开发实践
引言 在汽车及航空制造领域,CATIA作为核心的CAD设计软件,其二次开发能力对提升设计效率具有重要意义。本文介绍一种基于Python的CATIA零件着色工具开发方案,通过PySide6实现GUI交互,结合COM接口操作实现零件着色自动化。该方案成…...
OpenManus 的提示词
OpenManus 的提示词 引言英文提示词的详细内容工具集的详细说明中文翻译的详细内容GitHub 仓库信息背景分析总结 引言 OpenManus 是一个全能 AI 助手,旨在通过多种工具高效地完成用户提出的各种任务,包括编程、信息检索、文件处理和网页浏览等。其系统提…...
Ubuntu-docker安装mysql
只记录执行步骤。 1 手动下载myql镜像(拉去华为云镜像) docker pull swr.cn-east-3.myhuaweicloud.com/library/mysql:latest配置并启动mysql 在opt下创建文件夹 命令:cd /opt/ 命令:mkdir mysql_docker 命令:cd m…...
Electron桌面应用开发:自定义菜单
完成初始应用的创建Electron桌面应用开发:创建应用,随后我们就可以自定义软件的菜单了。菜单可以帮助用户快速找到和执行命令,而不需要记住复杂的快捷键,通过将相关功能组织在一起,用户可以更容易地发现和使用应用程序…...
理解 JavaScript 中的浅拷贝与深拷贝
在 JavaScript 开发中,我们经常需要复制对象或数组。然而,复制的方式不同,可能会导致不同的结果。本文将详细介绍 浅拷贝 和 深拷贝 的概念、区别以及实现方式,帮助你更好地理解和使用它们。 1. 什么是浅拷贝? 定义 …...
【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建
读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 前言Maven Tomcat Web应用程序搭建1、使用Maven构建新项目2、单击项目,连续按两次shift键,输入"添加",选择"添加框架支持"3、选择Java Web程序4、点击&…...
Git入门终极指南:命令行vs GUI工具效率对比分析
Git入门终极指南:命令行vs GUI工具效率对比分析 【免费下载链接】hello-git Curso para aprender a trabajar con el sistema de control de versiones Git y la plataforma GitHub desde cero y para principiantes. 项目地址: https://gitcode.com/gh_mirrors/h…...
照片换背景底色在线制作免费?试试这些工具,让你的证件照和商品图焕然一新
最近有个粉丝问我,"为什么我的证件照总是背景不理想?"我才意识到,很多人对照片换背景底色这事儿还挺纠结的。要么去影楼花钱重拍,要么自己P图,折腾半天还是不满意。其实啊,现在有了免费的在线工具…...
基于MCP协议与SearXNG构建AI智能体私有化搜索接口
1. 项目概述:一个为AI智能体打造的“搜索引擎接口”最近在折腾AI智能体(Agent)开发的朋友,可能都听说过MCP(Model Context Protocol)这个协议。简单来说,它就像给AI智能体装上了一套标准化的“插…...
《第一大道》铺前路,《凰标》立后世千年文化准则@凤凰标志
任何一场完整的文化复兴,必然包含两个阶段: 先破局开路,再立序定规。 无破局,则无出路;无定规,则无长存。一破 一立破局立规《第一大道》《凰标》武 突围 开荒 破弊文 守正 定调 传世让众生有路可走…...
5分钟完全掌握ncmdump:专业解密网易云NCM格式实现音乐自由
5分钟完全掌握ncmdump:专业解密网易云NCM格式实现音乐自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump ncmdump是一款专业的网易云音乐NCM格式解密工具,能够将加密的NCM音频文件转换为通用的MP3格式&#…...
使用taotoken后c语言项目调用大模型的延迟与稳定性实际体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用taotoken后c语言项目调用大模型的延迟与稳定性实际体验 在开发一个需要集成大模型能力的C语言桌面应用时,我们面临…...
全球首款量产载人变形机甲,硬核科技颠覆出行想象
全球首款量产版载人变形机甲!2026 年 5 月 12 日,中国宇树科技正式发布 GD01,既能载人操控、又能双足 / 四足快速变形,定位民用交通工具,载人后总重约 500kg,直接拉满硬核科技期待感!一、GD01 核…...
RAG和向量索引
为特定用例设计代理时,需要确保语言模型已建立基础并使用与用户所需内容相关的事实信息。 虽然语言模型针对大量数据进行了训练,但它们可能无权访问你想要向用户提供的知识。 若要确保代理基于特定数据提供准确且特定于域的响应,可使用检索增…...
忘记加密压缩包密码?开源工具ArchivePasswordTestTool帮你轻松找回
忘记加密压缩包密码?开源工具ArchivePasswordTestTool帮你轻松找回 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾因忘…...
Perplexity引用导出结果不可复现?独家“引用指纹”校验技术首次公开,误差率降至0.02%以内!
更多请点击: https://intelliparadigm.com 第一章:Perplexity引用格式设置教程 Perplexity 是一款面向研究者与开发者设计的 AI 原生搜索引擎,其输出结果常需规范引用以满足学术写作或技术文档要求。默认情况下,Perplexity 不自…...
