Linux使用DataX3.0 ~笔记-持续更新中
1|0一、Liunx 上安装DataX
- 查看当前系统版本
- 查看系统的名称,命令:uname
- 查看具体的系统版本,命令:cat /etc/redhat-release
查看是否具备jdk和python环境:
- 查看jdk版本,命令:java -version
- 查看python的版本,命令(大写V):python -V
注意:
- JDK(1.6以上,1.8即可)
- Python(一般2.7都可以)一定要为python2,因为后面执行datax.py的时候,里面的python的print会执行不了,导致运行不成功,会提示你print语法要加括号,python2中加不加都行 python3中必须要加,否则报语法错
DataX下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
- 下载后使用文件传输工具传输到linux上的opt目录下,解压
解压命令:
- DataX自检
解压成功后,进入bin目录,开始自检,命令:
出现以下界面说明DataX安装成功
2|0二、Job作业 JOSN文件配置模板
- “writeMode”: “insert”:表示数据是新增,可改为update,但是表中要有唯一主键
- preSql:预先执行的sql,在其他操作之前执行
3|0三、实操示例:MySql 同步到 MySql
#将mysql dataxhub库下c_jkgl_area表(21行内的查询结果)同步到c_jkgl_area_copy1
为避免MySQL关键字为字段名的情况,而造成DataX报错,column中的字段需用 “ ”双引号包起来。
1、将编辑好后的json文件【job_mysqlTomysql.json】放入安装目录下/datax/job目录
2、再进入datax/bin目录 执行以下命令运行,即可将读库中的表数据写入写库的表中:
3、查询目标表查看
与读出总数一致。
但是中文字段展示为了 ??? 符号。
经排查:连接池地址(url)后要加上:
完整jdbcUrl示例:
MySQL8.0以上版本,url需要添加相关配置
- 指定时区:serverTimezone=Asia/Shanghai
- 指定字符编码:characterEncoding=utf8
- 安全套接字协议:useSSL=false (false:就是通过账号密码进行连接, true:就是一般通过证书或者令牌进行安全验证)
4、完整JSON示例:
完善了jdbcurl
重新执行后,表中中文字段部分展示正常了。
4|0四、实操示例:Oracle 同步到 MySql
1、Oracle表同步到Mysql表 json示例:
2、增量同步参考
oracle同步mysql(全量和增量)https://blog.csdn.net/zhuyu19911016520/article/details/124143716
5|0五、实操示例:MySql8.x 版本同步到 MySql5.7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | ```json { "job" : { "setting" : { "speed" : { "byte" : "1048576" } }, "content" : [ { "reader" : { "name" : "mysqlreader" , "parameter" : { "username" : "your_username" , "password" : "your_password" , "column" : [ "*" ], "where" : "your_condition" , "connection" : [ { "querySql" : [ "SET @SESSION.SQL_MODE=ANSI_QUOTES;" ], "jdbcUrl" : [ "jdbc:mysql://your_host:your_port/your_database_name?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC" ] } ], "splitPk" : "your_pk_column" , "table" : [ "your_table_name" ] } }, "writer" : { "name" : "mysqlwriter" , "parameter" : { "username" : "your_username" , "password" : "your_password" , "column" : [ "*" ], "replace" : true , "updateKey" : [ "your_update_column" ], "session" : [ "SET sql_mode='STRICT_TRANS_TABLES';" ], "connection" : [ { "jdbcUrl" : "jdbc:mysql://your_host:your_port/your_target_database_name?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC" } ], "table" : "your_target_table_name" } } } ] } } ``` |
1 2 3 4 5 6 7 8 9 10 | 说明: - 需要修改的参数有: <br>`your_username`(MySQL 数据库用户名)<br>`your_password`(MySQL 数据库密码)<br>`your_condition`(SELECT 查询条件)<br>`your_host`(主机名或 IP 地址)<br>`your_port`(MySQL 数据库端口)<br>`your_database_name`(源数据库名称)<br>`your_table_name`(源数据库表名)<br>`your_pk_column`(源数据库表主键列名)<br>`your_update_column`(目标数据库表的用于 update 的列名)<br>`your_target_database_name`(目标数据库名称)和<br>your_target_table_name`(目标数据库表名)。 - 另外,MySQL 5.7 版本可能不支持 MySQL 8 中特的数据类型和语法,因此在导入目标数据库表之前需要确保列类型和语法兼容。 使用方法: - 将以上 JSON 配置文件保存为 `mysql_8_to_5.json`。 - 在 DataX 工具的执行目录下执行以下命令:`python bin/datax.py mysql_8_to_5.json`。 - DataX 将会将 MySQL 8 中的数据导出并导入到 MySQL 5.7 中。 |
__EOF__
作 者:Aaron
出 处:https://www.cnblogs.com/Williamls/p/17188268.html
关于博主: 谦谦君子 卑以自牧
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具