日常工作中大家可能会遇到如下的场景:
1、源数据库是sqlserver的,现在重新构建了系统,需要把sqlserver的数据迁移到mysql上来。
2、源数据库是oracle的,现在重新构建了系统,需要把sqlserver的数据迁移到mysql上来。
3、源数据是一个个包含很多CSV格式的标准数据文件,需要把数据保存到mysql上来。
。。。。。。等等场景。如果现在这个任务有你来操作的话,你会如何选择?
今天就给大家带来一个非常好用的工具-Datax,这是由alibaba开源的数据迁移组件。下面就来详细的给大家介绍一下。
一、Datax是什么
DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。使用一句话概括,DataX是阿里开源的离线数据库同步工具。DataX的开源地址是:DataX
二、Datax支持哪些异构数据库的数据迁移?
序号 | reader | writer |
1 | cassandrareader | cassandrawriter |
2 | drdsreader | drdswriter |
3 | ftpreader | ftpwriter |
4 | hbase094xreader | hbase094xwriter |
5 | hbase11xreader | hbase11xwriter |
6 | hdfsreader | hdfswriter |
7 | mongodbreader | mongodbwriter |
8 | mysqlreader | mysqlwriter |
9 | oceanbasev10reader | oceanbasev10writer |
10 | odpsreader | odpswriter |
11 | oraclereader | oraclewriter |
12 | ossreader | osswriter |
13 | otsreader | otswriter |
14 | otsstreamreader | |
15 | postgresqlreader | postgresqlwriter |
16 | rdbmsreader | rdbmswriter |
17 | sqlserverreader | sqlserverwriter |
18 | streamreader | streamwriter |
19 | txtfilereader | txtfilewriter |
20 | adswriter | |
21 | doriswriter | |
22 | hbase11xsqlwriter | |
23 | ocswriter |
上诉就是目前DataX的开源版本所支持的所有异构数据源的插件,这些插件全部都在datax的运行包的${DataX_home}/plugin/目录下的reader和writer里面。
三、DataX是如何运行的?
首先、需要确保我们的异构数据源都存在plugin下面的reader和writer,如果reader和writer没有对应的插件,那我们需要自己根据DataX的代码规范编写适合我们的插件,同时把插件进行maven打包后放到plugin下面的reader或者writer目录下。
其实、整个DataX的运行是由python驱动的,因此我们需要保证服务器上有对应的python环境,同时python一般都是用2.7或者3.x的版本,python的版本不一样,${DataX}/bin/datax.py文件也不一样,这块需要对应上,如果python是2.7的,那么就要用适配2.7的datax.py,如果python是3.x的,那么就要用适配3.x的datax.py。
再者,运行datax脚本需要配置文件,整个配置文件的格式如下:
{ "job": { "content": [{ "reader": { "name": "streamreader", "parameter": { "column": [], "sliceRecordCount": "" } }, "writer": { "name": "streamwriter", "parameter": { "encoding": "", "print": true } } }], "setting": { "speed": { "channel": "" } } } }
这里由3部分组成:
setting:主要控制数据迁移的速度,带宽越大,服务器配置越高,这里设置的值就越大,反之则小点。
reader:对应reader的信息,例如mysql,则有:mysql的连接参数,表字段参数,sql语句等。根据实际情况来。
writer:对应writer的信息,例如mysql,则有:mysql的连接参数,表字段参数,sql语句等。根据实际情况来。
每次导入根据实际的reader和writer配置信息进行配置即可。
最后,我们把整个json保存成一个xxx.json的文件,运行
cd {YOUR_DATAX_DIR_BIN} $ python datax.py ./xxx.json
最后看命令行出现类似下图所示,即代表任务执行成功了。
然后我们去对应的写入数据源核对下导入后的新数据即可。
还没有评论,来说两句吧...