DataX-多数据库同步迁移工具的安装与使用全过程-亲测实践
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
- cmd乱码解决:输入CHCP 65001
一、安装
1、下载压缩包
https://github.com/alibaba/DataX
https://github.com/alibaba/DataX/blob/master/userGuid.md
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.6
https://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
3、配置python环境变量
2.6版本的python需要自己配环境变量
3.x以上不用
- 在path下添加python安装路径
- 这里有个坑需要注意下,如果系统环境变量配置以后不成功,就将用户环境变量也配置下
- 出现如下表示成功
如果用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
当然也可以从 https://github.com/alibaba/DataX 自行配置。
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
- 出现的问题:
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后显示正常
-
sqlServer reader.md
https://github.com/alibaba/DataX/blob/master/sqlserverreader/doc/sqlserverreader.md -
Mysql writer.md
https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md