DataX-多数据库同步迁移工具的安装与使用全过程-亲测实践

news/2024/7/24 13:00:46 标签: mysql, python, linux, 数据库, ubuntu

数据库同步迁移工具的安装与使用全过程-亲测实践">DataX-多数据库同步迁移工具的安装与使用全过程-亲测实践

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

  • cmd乱码解决:输入CHCP 65001

一、安装

1、下载压缩包

https://github.com/alibaba/DataXhttps://github.com/alibaba/DataX/blob/master/userGuid.md

  • 直链下载http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

python">2、下载Python

官方推荐2.6.x

  • 下载页面https://www.python.org/downloads/
  • Windows专属下载页面https://www.python.org/downloads/windows/
  • Linux专属下载页面https://www.python.org/downloads/source/
  • 或者直接下载地址
    因Windows版本的2.6.9没有安装版,所以用了2.6.6https://www.python.org/ftp/python/2.6.6/python-2.6.6.amd64.msi
    Linux版本https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz

python环境变量">3、配置python环境变量

2.6版本的python需要自己配环境变量
3.x以上不用

  • 在path下添加python安装路径
    image-20200808102739769
  • 这里有个坑需要注意下,如果系统环境变量配置以后不成功,就将用户环境变量也配置下
    image-20200808102739769
  • 出现如下表示成功
    image-20200808103237537

如果用utools的工具的请注意下,utools打开的cmd总是会执行失败,要用ctrl+R打开cmd

4、解压Datax

解压后有几个目录

二、使用步骤

  • Datax一定不要安装在Program Files这种带空格的文件夹内,不然报错
  • 再次强调:一定一定要使用python2,使用python3会报错
    因为后面执行datax.py的时候,里面的python的print会执行不了,导致运行不成功,会提示你print语法要加括号,python2中加不加都行 python3中必须要加,否则报语法错

1、打开cmd切换到bin目录下

python datax.py -r {YOUR_READER} -w {YOUR_WRITER}
python datax.py -r sqlserverreader -w mysqlwriter

image-20200808120048583

当然也可以从 https://github.com/alibaba/DataX 自行配置。
image-20200808120424535

2、在bin下创建json文件夹并创建json文件

  • 根据配置文件模板填写相关选项
  • 根据模板配置json文件(sqlserver2mysql.json)如下:
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "sqlserverreader", 
                    "parameter": {
                        "column": [
							"ORG_ID",
                            "NAME",
                            "NAME",
                            "1",
                            "0",
                            "1",
                            "EXPIRED_TIME",
                            "1",
                            "REG_TIME"
						], 
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:sqlserver://localhost:1433;DatabaseName=jxs2"], 
                                "table": ["JX_ORG"]
                            }
                        ], 
                        "username": "sa",
                        "password": "123456" 
                    }
                }, 
                "writer": {
                    "name": "mysqlwriter", 
                    "writeMode": "insert",
                    "parameter": {
                        "column": [
                        	"id",
                            "name",
                            "remark",
                            "is_enable",
                            "is_deleted",
                            "creator_id",
                            "create_time",
                            "modifier_id",
                            "modify_time"
						], 
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://127.0.0.1:3306/smart_meal_order?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&tinyInt1isBit=false&allowMultiQueries=true", 
                                "table": ["tb_org"]
                            }
                        ], 
                        "username": "root",
                        "password": "123456" 
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

3、启动datax.py脚本文件

  • 启动命令
python datax.py ./json/tb_org.json

image-20200808121218078

image-20200808121254943
  • 出现的问题:
    Python版本要为2,原因前面已经说过了
    cmd乱码解决:输入CHCP 65001
    数据库中的数据中文乱码解决:在json文件中jdbcUrl项加上:?characterEncoding=utf8
jdbc:mysql://127.0.0.1:3306/smart_meal_order?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&tinyInt1isBit=false&allowMultiQueries=true
  • 输入CHCP 65001后显示正常

    image-20200808122233966
  • sqlServer reader.mdhttps://github.com/alibaba/DataX/blob/master/sqlserverreader/doc/sqlserverreader.md

  • Mysql writer.mdhttps://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md

Q.E.D.


http://www.niftyadmin.cn/n/748148.html

相关文章

人性:人类的五种需求

人类大概有5种需求: 1生理需求 2安全需求 3社会交往需求 4尊重需求 5实现自我价值需求 这五种需求并没有什么阶段之分,即并不是我们必须先实现生理需求,才会考虑安全需求等这样具有层次性的关系。这五种需求是并列的。 原文:http://blog…

mybatisPlus批量插入

mybatisPlus批量插入 1、只有一个Service类没有impl的时候 可以这么写 Service Slf4j public class OrgService extends ServiceImpl<OrgMapper,Org> implements IService<Org> {Autowiredprivate OrgMapper orgMapper;Autowiredprivate JxOrgService jxOrgService…

注重实效的程序员读书笔记

1发现他人的bug之后&#xff1a;要解决问题&#xff0c;而不是发出指责(Fix the Problem, Not the Blame)。 2在遇到bug之后要记住&#xff1a;不要恐慌(Dont Panic) 3编写羞怯的代码&#xff1a;不想别人暴露你自己&#xff0c;不与太多人打交道。 4要配置&#xff0c;不要集成…

SpringBoot+mybatisPlus实现多数据源

SpringBootmybatisPlus实现多数据源curd 适用场景&#xff1a;一个项目需要连接多个数据库的时候 dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。 其支持 Jdk 1.7, SpringBoot 1.4.x 1.5.x 2.x.x。 示例项目 可参考项目下的samples…

c++写模板的注意事项

首先给出结论&#xff1a; c中和模板相关的代码&#xff0c;都放在.h文件当中。 为什么呢&#xff1f; 首先我们要理解编译器是怎么处理模板的&#xff1a;编译器在编译cpp或cc文件的时候&#xff0c;根据代码中使用到的参数类型&#xff0c;实例化对应版本的函数。 所以&a…