本人在导数据的时候发生了很多问题,比如千百万的数据量的表导了N久都没导完,要么就是导完了有一部分失败,又或者是表明对不上号,字段对不上,然后导出来的sql文件过大导致想打开文件修改一下sql文件的表明数据库名都打不开,很是难受,在别人的推荐下发现了这款工具,真的速度很快(没开车哦~)
接下来附上DataX的使用方式:
首先附上官方文档的位置:Github地址
注意环境 需要JDK1.8,mavaen Python 一定要使用2.6的 不要3+的 一定要配置好环境变量
接着配置我们的 json 文件,该 json 文件用来指定我们需要进行导入的数据源,数据写入的地点,以及连接信息等
接下来放上本人在用的配置文件,重要信息做了隐藏处理,大家可以根据自己的场景进行修改即可
{
"job":{
"setting":{
"speed":{
"channel":6
},
"errorLimit":{
"record":0,
"percentage":0.02
}
},
"content":[
{
"reader":{
"name": "mysqlreader",
"parameter":{
"username":"填入你自己的账号密码",
"password":"填入你自己的账号密码",
"column":[ //列明
"ID",
"AMOUNT"
],
"splitPk":"ID", //主键
"connection":[
{
"table":[
"填入你的表明"
],
"jdbcUrl":[
"jdbc:mysql://localhost:3306/xxxx" //填入你的数据源连接的url
]
}
]
}
},
"writer":{
"name": "mysqlwriter",
"parameter":{
"writeMode":"insert", // 这是进行插入操作
"username":"填入你自己的账号密码",
"password":"填入你自己的账号密码",
"column":[ //列明
"ID",
"AMOUNT"
],
"session":[
"set session sql_mode='ANSI'"
],
"preSql":[
"truncate 输入你需要清空数据的表名" // 指的是执行插入语句 如果你需要清空该表的数据可以执行这个方法
],
"connection":[
{
"jdbcUrl":"jdbc:mysql://xxxxxx/xxxxxxx?&serverTimezone=Asia/Shanghai", //填入你的数据输出的地址的连接的url
"table":[
"xxxxxxx" // 指的是你需要导入进库的表的表名
]
}
]
}
}
}
]
}
}
解压好下载后的DataX压缩包后,将我们配置好的 json文件 放在bin目录下,接着执行指令
python datax.py (你的json文件名字)
接着稍作等待即可,控制台是有日志的
可以看到260w条数据只用了两分钟!
对了,稍提一嘴,如果控制台乱码了,可以在cmd下面输入如下指定:
CHCP 65001
之后就能够解决DataX的乱码问题了!
如果有其他问题可以参考这篇文档:DataX常见问题
顺带提一嘴,DataX导入的时候暂时不支持MySQL8+的,所以如果大家的数据库版本过高的话,导数据的时候得自己手动去替换一下DataX的数据库的驱动~