Datax-web 添加达梦数据库

[复制链接]
发表于 2026-2-25 22:25:18 | 显示全部楼层 |阅读模式
 环境JDK1.8
node 10.24.1
python 2.X
Datax分支tag202309版本
后端项目  分支使用2.1.3-alpha-releaseGitHub - WeiYe-Jing/datax-web: DataX集成可视化页面,选择数据源即可一键天生数据同步使命,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,批量创建RDBMS数据同步使命,集成开源调治体系,支持分布式、增量同步数据、实时查察运行日志日志监控监控实行器资源、KILL运行进程、数据源信息加密等。DataX集成可视化页面,选择数据源即可一键天生数据同步使命,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,批量创建RDBMS数据同步使命,集成开源调治体系,支持分布式、增量同步数据、实时查察运行日志日志监控监控实行器资源、KILL运行进程、数据源信息加密等。 - WeiYe-Jing/datax-web
https://github.com/WeiYe-Jing/datax-web.git
 前端项目  分支使用2.1.3-alpha-release
        GitHub - WeiYe-Jing/datax-web-ui: DataX Web UI
1、添加达梦JDBC  jdbc包放到 datax-admin/src/mian/lib下

2、pom.xml添加依赖
  
  1. <dependency>
  2.             <groupId>com.dameng</groupId>
  3.             <artifactId>Dm8JdbcDriver18</artifactId>
  4.             <version>8.1.1.193</version>
  5.             <scope>system</scope>
  6.             <systemPath>${basedir}/src/main/lib/DmJdbcDriver18-8.1.1.193.jar</systemPath>
  7.         </dependency>
复制代码
3、新增DMWriter类
  
  1. package com.wugui.datax.admin.tool.datax.writer;
  2. /**
  3. * 达梦
  4. */
  5. public class DMWriter extends BaseWriterPlugin implements DataxWriterInterface {
  6.     @Override
  7.     public String getName() {
  8.         return "rdbmswriter";
  9.     }
  10. }
复制代码
4、新增DMReader类
  
  1. package com.wugui.datax.admin.tool.datax.reader;
  2. /**
  3. * 达梦
  4. */
  5. public class DMReader extends BaseReaderPlugin implements DataxReaderInterface {
  6.     @Override
  7.     public String getName() {
  8.         return "rdbmsreader";
  9.     }
  10. }
复制代码
5、新增DMSQLQueryTool类
  1. package com.wugui.datax.admin.tool.query;
  2. import com.wugui.datatx.core.enums.DbType;
  3. public class DMSQLQueryTool extends BaseQueryTool implements QueryToolInterface{
  4.     public DMSQLQueryTool(DbType dbType, String parameter) {
  5.         super(dbType, parameter);
  6.     }
  7. }
复制代码
6、在Constants类中添加达梦支持
        datax-core/src/main/java/Constants
  1. public static final String COM_DAMENG_JDBC_DRIVER = "dm.jdbc.driver.DmDriver";
  2. public static final String DAMENG = "DAMENG";
  3. public static final String JDBC_DAMENG = "jdbc:dm://";
复制代码
7、datax-core项目新增Datasource类
  1. package com.wugui.datatx.core.datasource;
  2. import com.wugui.datatx.core.enums.DbType;
  3. import com.wugui.datatx.core.util.Constants;
  4. public class DMDataSource extends BaseDataSource{
  5.     @Override
  6.     public String driverClassSelector() {
  7.         return Constants.COM_DAMENG_JDBC_DRIVER;
  8.     }
  9.     @Override
  10.     public DbType dbTypeSelector() {
  11.         return DbType.DAMENG;
  12.     }
  13. }
复制代码
8、datax-core项目DbType新增达梦摆列
  1. DAMENG(14, Constants.COM_DAMENG_JDBC_DRIVER, DMDataSource.class, "dameng")
复制代码
9、datax-admin项目DbTypePlugin插件类新增达梦摆列
  1.     DAMENG(DbType.DAMENG, DMDatabaseMeta.getInstance(), DMSQLQueryTool.class, new DMReader(), new DMWriter());
复制代码
10、datax-admin项目新增DMDatabaseMeta类 
  1. package com.wugui.datax.admin.tool.meta;
  2. /**
  3. * 达梦数据库meta信息查询
  4. */
  5. public class DMDatabaseMeta extends BaseDatabaseMeta{
  6.     private volatile static DMDatabaseMeta single;
  7.     public static DMDatabaseMeta getInstance() {
  8.         if (single == null) {
  9.             synchronized (DMDatabaseMeta.class) {
  10.                 if (single == null) {
  11.                     single = new DMDatabaseMeta();
  12.                 }
  13.             }
  14.         }
  15.         return single;
  16.     }
  17.     @Override
  18.     public String getSQLQueryComment(String schemaName, String tableName, String columnName) {
  19.         return String.format("SELECT COMMENTS FROM ALL_COL_COMMENTS WHERE SCHEMA_NAME = '%s' AND  TABLE_NAME = '%s' AND COLUMN_NAME = '%s'", schemaName, tableName, columnName);
  20.     }
  21.     @Override
  22.     public String getSQLQueryPrimaryKey() {
  23.         return "SELECT WM_CONCAT(B.COLUMN_NAME) PK_COLUMNS FROM ALL_CONSTRAINTS A, ALL_CONS_COLUMNS B WHERE  A.CONSTRAINT_type='P' AND A.OWNER=? AND A.TABLE_NAME=? AND B.OWNER = A.OWNER  AND A.TABLE_NAME = B.TABLE_NAME GROUP BY A.OWNER, A.TABLE_NAME";
  24.     }
  25.     @Override
  26.     public String getSQLQueryTables() {
  27.         return "select table_name FROM user_tables";
  28.     }
  29.     @Override
  30.     public String getSQLQueryColumns(String... args) {
  31.         return "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER = ? AND TABLE_NAME = ?";
  32.     }
  33.     /**
  34.      *
  35.      * @param args
  36.      * @return
  37.      */
  38.     @Override
  39.     public String getSQLQueryTableSchema(String... args) {
  40.         return "SELECT DISTINCT OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='SCH'";
  41.     }
  42. }
复制代码
11、前端添加设置

       dataSources属性添加
        

  1. { value: 'DAMENG', label: 'DAMENG' }
复制代码
       selectDataSource方法添加
  1. else if (type === 'DAMENG') {
  2.         this.temp.connectionParams.jdbcUrl = 'jdbc:dm://{host}:{port}'
  3.       }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表