Pentaho Kettle二次开发(简单数据交换)之Kettle连接达梦数据库思路及实现方式

过程很曲折,具体实现很简单,话不多说,直接上代码。

需要在数据库连接的xml字符串配置中增加如下标签:

     * 达梦数据库连接额外添加配置:
     * 1. 数据库类型选择通用连接
     *  type:Generic database
     * 2.需要在connection标签中额外配置达梦数据库的数据库驱动和连接方式如下
     * "" +
     *      "" +
     *           "CUSTOM_DRIVER_CLASS"+
     *            "dm.jdbc.driver.DmDriver" +
     *       ""+
     *       "" +
     *            "CUSTOM_URL"+
     *            "jdbc:dm://localhost:5236/sysdba" +
     *       ""+
     * ""+

完整XML字符串配置:

* name: 连接名称
* server:Ip地址
* type:数据库类型
* access:连接方式,Native指JDBC
* database:base
* port:端口
* username:用户名
* passeord:密码
* attributes-attribute-code-CUSTOM_DRIVER_CLASS:数据库驱动类 
* attributes-attribute-code-CUSTOM_URL: 数据库连接路径,jdbc:dm://IP:5236/username
                    "" +
                    "" +
                    "to" +
                    "localhost" +
                    "Generic database" +
                    "Native" +
                    "dm" +
                    "5236" +
                    "sysdba" +
                    "111111111" +
                    "" +
                    "" +
                    "CUSTOM_DRIVER_CLASS"+
                    "dm.jdbc.driver.DmDriver" +
                    ""+
                    "" +
                    "CUSTOM_URL"+
                    "jdbc:dm://localhost:5236/sysdba" +
                    ""+
                    ""+
                    ""

实现思路:

1.首先kettle原生没有对达梦数据库的连接支持

2.达梦可以通过jdbc的形式连接

3.最重要的是客户端的形式,连接达梦,可以使用Type为Generic database类型,自定义连接地址和数据库驱动。

4.kettle源码为java,使用ideadebug源码,查看相关实现。

客户端图:

Pentaho Kettle二次开发(简单数据交换)之Kettle连接达梦数据库思路及实现方式_第1张图片

如图示。

数据库连接为Generic database

连接方式为Native(JDBC)

自定义可以设置连接URL、驱动类名称、用户名、密码

然后带着这个思路去追kettle的源码,找到处理数据库连接的方法。

kettle支持的数据库连接xml配置是这样的。

                    "" +
                    "" +
                    "from" +
                    "localhost" +
                    "Oracle" +
                    "Native" +
                    "orcl" +
                    "1521" +
                    "sxfy2" +
                    "sxfy2" +
                    "",

这块体现在客户端如图。

Pentaho Kettle二次开发(简单数据交换)之Kettle连接达梦数据库思路及实现方式_第2张图片

同一个界面的不同配置。自然推论,Generic database类型的数据库连接配置和普通连接类型是一样传值的。

也就是通过XML把值传过去的。这样跟源码就有方向了,查看kettle源码对于数据库连接的标签和解析。

DEBUG过程使用先结果再配置的倒推过程,先执行数据交换文件。

查看数据源获取连接的实现方式。GenericDatabaseMeta.class中对于驱动和数据连接URL的获取方法。

这里我们可以看到,kettle通过attributes标签获取的连接配置参数。

Pentaho Kettle二次开发(简单数据交换)之Kettle连接达梦数据库思路及实现方式_第3张图片

然后再跟转化过程中kettle通过TransMeta实现,通过DatabaseMeta,

调用类,使用TransMeta的getXML()方法解析XML

TransMeta.class的getXML()方法对于数据连接的配置

Pentaho Kettle二次开发(简单数据交换)之Kettle连接达梦数据库思路及实现方式_第4张图片

DatabaseMeta.class的方法,处理xml中的连接配置

Pentaho Kettle二次开发(简单数据交换)之Kettle连接达梦数据库思路及实现方式_第5张图片

这样就和前边的attributes取值对上了。

通过跟源码我们可以看到xml对于attributes的解析方式。得到如下配置格式。


    
        XXX
        XXXX
    
    
        XXX
        XXXX
    

最后把达梦的链接地址和驱动类配置,完美解决。

 

 

 

 

你可能感兴趣的:(Kettle)