DataX --alibaba

简介

DataX是阿里开源ETL工具,全面支持常见数据库,并在阿里广泛使用,详情参考github地址
下面以MySQL->SQLSERVER,SQLSERVER->SQLSERVER为例记录datax的基本用法,然后结合crontab实现数据抽取任务。

datax

环境配置

datax是java实现,通过python脚本加载json配置文件执行,因此需要JDK1.8和python2.x,这是官方建议的版本。

datax打包

从github clone源码到本地,mvn打包:mvn -U clean package assembly:assembly -Dmaven.test.skip=true,本地编译报错无法找到com.aliyun.openservices:tablestore-streamclient:jar:1.0.0-SNAPSHOT,找到osstreamreader的pom.xml,更改如下:

<dependency>
    <groupId>com.aliyun.openservices</groupId>
    <artifactId>tablestore-streamclient</artifactId>
    <!--<version>1.0.0-SNAPSHOT</version>-->
	<version>1.0.0</version>
</dependency>

mvn -U clean package assembly:assembly -Dmaven.test.skip=true 重新打包

[INFO] BUILD SUCCESS
[INFO] -----------------------------------------------------------------
[INFO] Total time: 08:12 min
[INFO] Finished at: 2019-04-03T18:05:48+08:00
[INFO] Final Memory: 133M/960M
[INFO] -----------------------------------------------------------------

也可以从github下载打包好的文件直接使用,github上的包有可能不是最新的。 打包好的文件目录如下
target
bin是python脚本目录,job是任务配置目录,plugin是抽取插件目录。

MySQL->SQLSERVER

配置文件内容:抽取测试表中数据到目标表

{
    "job": {
        "setting": {
            "speed": {
			    "byte":10485760
			}
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "mysql123",
                        "where": "",
                        "connection": [
                            {
                                "querySql": [
                                    "select * from db_info_p;"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://localhost:3306/test"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "sqlserverwriter",
                    "parameter": {
					    "username": "sa",
                        "password": "sa1",
						"column": [
				                    '*'
			                    ],
                        "connection": [
                            {
                                "table": [
                                    "db_info_p"
                                ],
                                "jdbcUrl": "jdbc:sqlserver://192.168.1.151:1000;DatabaseName=FrontMachineTest"
                            }
                        ]
                    }
                }
            }
        ]
    }
}

SQLSERVER->SQLSERVER

配置文件内容:抽取三个月之前的数据到备份表,删除当前表中相应的数据

{
    "job": {
        "setting": {
            "speed": {
			    "byte":10485760
			}
        },
        "content": [
			{
                "reader": {
                    "name": "sqlserverreader",
                    "parameter": {
                        "username": "sa",
                        "password": "sa1!",
                        "where": "",
                        "connection": [
                            {
                                "querySql": [
                                    "select * from t_gwlssj where sjsj<DATEADD(M,-3,GETDATE());"
                                ],
                                "jdbcUrl": [
                                    "jdbc:sqlserver://172.16.10.45:1000;DatabaseName=NCYS_GCDB"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "sqlserverwriter",
                    "parameter": {
					    "username": "sa",
                        "password": "sa1!",
						"column": [
				                    '*'
			                    ],
                        "connection": [
                            {
                                "table": [
                                    "t_gwlssj_bak"
                                ],
                                "jdbcUrl": "jdbc:sqlserver://172.16.10.45:1000;DatabaseName=NCYS_GCDB"
                            }
                        ],
						"postSql": [
                            "delete from t_gwlssj where sjsj<DATEADD(M,-3,GETDATE());"
                        ]
                    }
                }
            }
        ]
    }
}

注意writer和reader的connection配置是有区别的writer中数据库连接字符串不能配置多个,否则会报出找不到合适驱动的异常信息。
其它datax更详细的配置可参考官网说明。

crontab

环境配置

1、下载nircmd,下载地址
2、安装nircmd,并同意copy到系统目录,若有安全软件风险提醒则需要添加信任。

crontab配置

1、下载crontab,github地址
2、更改crontab下bin目录中crontab.bat、crontab_install.bat、crontab_uninstall.bat中crontab的路径。
3、配置任务

# 每隔1天执行一次
* * */1 * * python F:/datax/bin/datax.py F:/datax/job/sclssj_job.json
* * */1 * * python F:/datax/bin/datax.py F:/datax/job/gwlssj_job.json
* * */1 * * python F:/datax/bin/datax.py F:/datax/job/rcgglssj_job.json

4、安装定时任务
执行crontab_install.bat

查看定时任务执行成功,数据抽取成功,大功告成。

欢迎来访

  • 有问题欢迎留言或加交流qq:825121848
  • 转载请注明出处
  • 请小编喝茶~
Last Updated: 4/16/2022, 11:05:56 AM