Datax 数据导出

24 Mar 2021

概述

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

官网:https://github.com/alibaba/DataX/blob/master/introduction.md

DataX安装配置

前置条件:Linux、JDK(1.8以上,推荐1.8)、Python(推荐Python2.6.X) DataX的安装比较简单基本上是开箱即用:

1、下载DataX工具包
http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

2、下载后解压至本地某个目录,进入bin目录,即可运行同步作业

配置环境变量 DATAX_HOME

cd  {YOUR_DATAX_HOME}/bin  
python datax.py {YOUR_JOB.json}  
python $DATAX_HOME/bin/datax.py $DATAX_HOME/job/job.json  

自检脚本: python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json

DataX使用案例

整个配置文件是一个job的描述; job下面有两个配置项,content和setting,其中content用来描述该任务的源和 目的端的信息,setting用来描述任务本身的信息; content又分为两部分,reader和writer,分别用来描述源端和目的端的信息; setting中的speed项表示同时起几个并发执行该任务;
详见官网,使用对应模版改参数即可

test.json

{  
    "job": {  
        "setting": {  
            "speed": {  
              	"channel":1,  
                "byte":10485760  
            },  
            "errorLimit": {  
                "record": 0,  
                "percentage": 0.02  
            }  
        },  
        "content": [  
            {  
                "reader": {  
                    "name": "streamreader",  
                    "parameter": {  
                        "sliceRecordCount": 10,  
                        "column" : [  
                            {  
                                "value": "DataX",  
                                "type": "string"  
                            },  
                          	{  
                                "value": "数据迁移工具",  
                                "type": "string"  
                            },  
                            {  
                                "value": 19890604,  
                                "type": "long"  
                            },  
                            {  
                                "value": "1989-06-04 00:00:00",  
                                "type": "date"  
                            },  
                            {  
                                "value": true,  
                                "type": "bool"  
                            },  
                            {  
                                "value": "test",  
                                "type": "bytes"  
                            }  
                        ],  
                    }  
                },  
                "writer": {  
                    "name": "streamwriter",  
                    "parameter": {  
                        "print": true,  
                        "encoding": "UTF-8"  
                    }  
                }  
            }  
        ]  
    }  
}