DataX 使用rdbms插件同步数据库
Posted 福州-司马懿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataX 使用rdbms插件同步数据库相关的知识,希望对你有一定的参考价值。
Hana数据库
简介
SAP HANA是一款支持企业预置型部署和云部署模式的内存计算平台 ,提供高性能的数据查询功能,用户可以直接对大量实时业务数据进行查询和分析,而不需要对业务数据进行建模、聚合等。SAP内存数据库的数据并不是只在内存里,也会不停写到硬盘里
教程
https://www.w3cschool.cn/sap_hana/
引用库信息
名字 | 值 | 备注 |
---|---|---|
Driver Class | com.sap.db.jdbc.Driver | |
HANA JDBC Driver | ngdbc.jar | 下载地址 https://repo1.maven.org/maven2/com/sap/cloud/db/jdbc/ngdbc/2.9.12/ |
JDBC URL | jdbc:sap://***.***.***.***:30015?reconnect=true |
maven依赖
<dependency>
<groupId>com.sap.cloud.db.jdbc</groupId>
<artifactId>ngdbc</artifactId>
<version>2.9.12</version>
<type>pom</type>
</dependency>
DataX同步数据到hana
有时候我们要同步某些数据库,但发现DataX并未提供该数据库插件。此时,我们可以通过rdbms插件进行同步,该插件使用了jdbc方式进行数据同步,因此可以适用于绝大部分的数据库
如果声明和jar包放在源文件中,则需要重新编译;若直接在生成的target文件下修改,则可以直接使用。
查阅说明
datax暂时没有独立插件支持hana,需要使用通用RDBMS;这里是写入hana,使用rdbmswriter。查看官网介绍文档:https://github.com/alibaba/DataX/blob/master/rdbmswriter/doc/rdbmswriter.md
声明驱动
需要修改~/Documents/DataX-master/rdbmswriter/src/main/resources/plugin.json
,注册数据库驱com.sap.db.jdbc.Driver
{
"name": "rdbmswriter",
"class": "com.alibaba.datax.plugin.reader.rdbmswriter.RdbmsWriter",
"description": "useScene: prod. mechanism: Jdbc connection using the database, execute select sql, retrieve data from the ResultSet. warn: The more you know about the database, the less problems you encounter.",
"developer": "alibaba",
"drivers":["dm.jdbc.driver.DmDriver", "com.sybase.jdbc3.jdbc.SybDriver", "com.edb.Driver", "com.sap.db.jdbc.Driver"]
}
添加驱动
~/Documents/DataX-master/rdbmswriter/src/main/libs
目录下添加驱动 ngdbc-2.9.12.jar
重新编译
由于是修改源码,一定要重新编译,命令为mvn -U clean package assembly:assembly -Dmaven.test.skip=true
,才会影响到target目录
生成配置文件
在dataX目录下,执行命令 python target/datax/datax/bin/datax.py -r mysqlreader -w rdbmswriter
生成配置文件,然后进行修改。
注意:rdbms不能使用writeMode参数,要手动去掉
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [],
"connection": [
{
"jdbcUrl": [],
"table": []
}
],
"password": "",
"username": "",
"where": ""
}
},
"writer": {
"name": "rdbmswriter",
"parameter": {
"column": [],
"connection": [
{
"jdbcUrl": "",
"table": []
}
],
"password": "",
"preSql": [],
"session": [],
"username": "",
"writeMode": ""
}
}
}
],
"setting": {
"speed": {
"channel": ""
}
}
}
}
可能遇到的错误
写入模式(writeMode)配置有误
查看源码https://github.com/alibaba/DataX/blob/master/rdbmswriter/src/main/java/com/alibaba/datax/plugin/reader/rdbmswriter/RdbmsWriter.java,可知rdbms的writeMode仅支持insert,所以不用填,填了反而会报错
未找到库
声明并添加好驱动之后,一定要重新编译 mvn -U clean package assembly:assembly -Dmaven.test.skip=true
。否则配置不会被更新到 target 目录
注意:重新编译后job目录下的文件都会被清空!!!
没找到对应驱动jar包
检查~Documents/DataX-master/target/datax/datax/plugin/writer/rdbmswriter/libs
目录下是否存在该jar包
检查~Documents/DataX-master/target/datax/datax/plugin/writer/rdbmswriter/plugin.json
是否正确设置驱动
以上是关于DataX 使用rdbms插件同步数据库的主要内容,如果未能解决你的问题,请参考以下文章