Kettle数据库配置抽离

Kettle数据库配置抽离在使用ETL工具Kettle时候,为了使作业或转换具有通用性,有时候,我们需要将数据库的连接配置从脚本或转换中抽离出来,下面介绍一种方案,该方案主要涉及的文件有: # 这两个文件,默认是在系统的用户…

Kettle数据库配置抽离

# 这两个文件,默认是在系统的用户目录下,如果配置了KETTLE_HOME环境变量,则spoon会去KETTLE_HOME的目录下加载这两个文件
<USER_HOME>/.kettle/kettle.properties
<USER_HOME>/.kettle/shared.xml

代码100分

共享数据库配置

在作业中,按照DB连接向导建立一个数据库连接,填入完整的数据库连接信息。

image-20181017182547003

image-20181017182954582

建立完连接,测试连接成功后,在该DB连接上点右键,选择“共享”。

image-20181017183142392

完成上述共享操作后,就可以在以下文件中找到共享数据库链接的配置:

代码100分<USER_HOME>/.kettle/shared.xml
<?xml version="1.0" encoding="UTF-8"?>
<sharedobjects>
  <connection>
    <name>test_db</name>
    <server>127.0.0.1</server>
    <type>MYSQL</type>
    <access>Native</access>
    <database>test_db</database>
    <port>3306</port>
    <username>testdb</username>
    <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
    <servername/>
    <data_tablespace/>
    <index_tablespace/>
    <attributes>
      <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
    </attributes>
  </connection>

</sharedobjects>

这样设置后,你就可以在后续的作业和转换中选择这个共享的test_db。

虽然这样算是抽离出了DB连接,但是还不够优化,下面介绍如何将DB连接中的部分配置再次抽离出来。

抽离DB配置

例如,我们想将数据库的地址、SID、username、password从shared.xml中抽离出来,这个时候,就需要用到

代码100分<USER_HOME>/.kettle/kettle.properties

我们只需要在这个文件中定义相关的DB变量,如下:

test_db_host=127.0.0.1
test_db_port=3306
test_db_sid=test_db
test_db_user=test_db
test_db_password=Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c

然后,我们修改

<USER_HOME>/.kettle/shared.xml
<?xml version="1.0" encoding="UTF-8"?>
<sharedobjects>
  <connection>
    <name>test_db</name>
    <server>${test_db_host}</server>
    <type>MYSQL</type>
    <access>Native</access>
    <database>${test_db_sid}</database>
    <port>${test_db_port}</port>
    <username>${test_db_user}</username>
    <password>${test_db_password}</password>
    <servername/>
    <data_tablespace/>
    <index_tablespace/>
    <attributes>
      <attribute><code>PORT_NUMBER</code><attribute>${test_db_port}</attribute></attribute>
    </attributes>
  </connection>

</sharedobjects>

这样,就彻底的将数据库的配置从作业和转换中抽离出来了。

注意的一点是,最好在shared.xml中增加如下的数据库连接属性,可以有效避免数据传输字符、日期转换问题

<connection>
    <name>test_db</name>
    <server>${test_db_host}</server>
    <type>MYSQL</type>
    <access>Native</access>
    <database>${test_db_sid}</database>
    <port>${test_db_port}</port>
    <username>${test_db_user}</username>
    <password>${test_db_password}</password>
    <servername/>
    <data_tablespace/>
    <index_tablespace/>
    <attributes>
      <attribute>
        <code>EXTRA_OPTION_MYSQL.characterEncoding</code>
        <attribute>utf8</attribute>
      </attribute>
      <attribute>
        <code>FORCE_IDENTIFIERS_TO_LOWERCASE</code>
        <attribute>N</attribute>
      </attribute>
      <attribute>
        <code>FORCE_IDENTIFIERS_TO_UPPERCASE</code>
        <attribute>N</attribute>
      </attribute>
      <attribute>
        <code>IS_CLUSTERED</code>
        <attribute>N</attribute>
      </attribute>
      <attribute>
        <code>PORT_NUMBER</code>
        <attribute>${test_db_port}</attribute>
      </attribute>
      <attribute>
        <code>PRESERVE_RESERVED_WORD_CASE</code>
        <attribute>Y</attribute>
      </attribute>
      <attribute>
        <code>QUOTE_ALL_FIELDS</code>
        <attribute>N</attribute>
      </attribute>
      <attribute>
        <code>SQL_CONNECT</code>
        <attribute>set names utf8</attribute>
      </attribute>
      <attribute>
        <code>STREAM_RESULTS</code>
        <attribute>Y</attribute>
      </attribute>
      <attribute>
        <code>SUPPORTS_BOOLEAN_DATA_TYPE</code>
        <attribute>Y</attribute>
      </attribute>
      <attribute>
        <code>SUPPORTS_TIMESTAMP_DATA_TYPE</code>
        <attribute>Y</attribute>
      </attribute>
      <attribute>
        <code>USE_POOLING</code>
        <attribute>N</attribute>
      </attribute>
    </attributes>
  </connection>

做完上述的DB连接的共享和配置后,再处理作业和转换时,如果选择共享的DB连接,实际上Kettle会复制shared.xml中的数据库配置到具体的作业和转换中,复制过去后,相应的变量会从kettle.properties中读取。

也就是说,如果要把作业和转换发布到正式环境,实际上可以不需要shared.xml,shared.xml更多的作用是用于开发阶段。

另外,注意每次修改了shared和kettle.properties,要重启Kettle的开发工具,否则可能无法正常生效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8664.html

(0)
上一篇 2023-02-24
下一篇 2023-02-24

相关推荐

  • oracle修改sys用户密码_oracle查询sys用户密码

    oracle修改sys用户密码_oracle查询sys用户密码问题描述:orcl服务器要连接orclstd 想要sqlplus sys/410526@orclstd as sysdba 连接orclstd数据库,但是发现啥意思密码不对,就对sys密码进行重新设置

    2022-12-22
    137
  • Mysql实战45讲 百度网盘_mysql实战45讲百度云

    Mysql实战45讲 百度网盘_mysql实战45讲百度云MySQL实战45讲 3

    2023-05-27
    143
  • redis主从复制原理_redis互为主从

    redis主从复制原理_redis互为主从Redis的主从复制是如何工作的?如何在同步数据的同时,还保持着高性能,你了解吗? https://redis.io/topics/replication 注意以下基于 redis 5 最新版本, 名

    2023-03-03
    148
  • sql字段加密解密_excel函数100例正式课

    sql字段加密解密_excel函数100例正式课摘要:数据加密作为有效防止未授权访问和防护数据泄露的技术,在各种信息系统中广泛使用。作为信息系统的核心,GaussDB(DWS)数仓也提供数据加密功能,包括透明加密和使用SQL函数加密。 本文分享自华

    2023-06-15
    157
  • 两种运行Python程序的方法

    两种运行Python程序的方法Python作为一种高级编程语言,可用于多种任务——从数据分析到人工智能,从网页开发到自动化。Python社区也因此庞大,吸引了越来越多的程序员。当你开始使用Python时,你一定会问自己:如何运行Python程序?在本文中,我们将为您介绍两种常见的运行Python程序的方法。

    2024-09-15
    25
  • 使用numpy arange函数创建连续数组

    使用numpy arange函数创建连续数组Numpy是Python中的一种扩展库,它为Python添加了对多维数组对象的支持以及用于处理这些数组的函数。

    2024-05-13
    75
  • mysql备份脚本怎么写_docker 备份

    mysql备份脚本怎么写_docker 备份从MySQL5.6开始,mysqlbinlog支持将远程服务器上的binlog实时复制到本地服务器上。 mysqlbinlog的实时二进制复制功能并非简单的将远程服务器的日志复制过来,它是通过MyS…

    2023-04-07
    168
  • Python 工程师

    Python 工程师Python是一种高级编程语言,被广泛用于Web开发、科学计算、人工智能等领域,同时也逐渐成为了最受欢迎的编程语言之一。作为一名成功的Python工程师,需要掌握一系列技能和知识,如数据分析、网络编程、机器学习等。这篇文章将介绍Python工程师的职责、所需技能以及如何成为一名出色的Python工程师。

    2024-04-20
    73

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注