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上的包有可能不是最新的。
打包好的文件目录如下
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
- 转载请注明出处
- 请小编喝茶~