使用javascript访问kettle内部组件

WBOY
풀어 주다: 2016-06-07 16:03:55
원래의
1516명이 탐색했습니다.

使用javascript访问kettle内部组件 很少有ETL项目需求使用kettle标准步骤不能实现的。假设举例每条记录都需标记为来自那个数据库的信息,原数据库是通过DB连接设置的,那如何获取这些设置?(类型、主机、端口、数据库名称等) 在kettle中没有标准步骤可以实现

使用javascript访问kettle内部组件

很少有ETL项目需求使用kettle标准步骤不能实现的。假设举例每条记录都需标记为来自那个数据库的信息,原数据库是通过DB连接设置的,那如何获取这些设置?(类型、主机、端口、数据库名称等)

在kettle中没有标准步骤可以实现,幸运的是javascript步骤可以访问kettle内部组件并实现以上需求。

访问kettle内部组件是_step_变量,其被自动设置在每个javascript步骤中。它代表javascript步骤本身,步骤的getTransMeta()方法返回TransMeta对象,表示整个转换,TransMeta对象可以用来获取关于定义在转换中的数据库连接信息。正确的TransMeta对象通过findDatabase()方法获得,返回DatabaseMeta对象,其他提供了一组方法返回数据库连接的信息。

下面的代码获取名称为“SourceDB”数据库连接的一些信息。

// get db object

var db = _step_.getTransMeta().findDatabase("SourceDB");

// ask db object for information

var db_type = db.getDatabaseTypeDesc();

var db_host = db.getHostname();

var db_port = db.getDatabasePortNumberString();

var db_name = db.getDatabaseName();

var db_tblspace = db.getDataTablespace();

var db_idxspace = db.getIndexTablespace();

var db_user = db.getUsername();

var db_pass = db.getPassword();

var db_url = db.getURL();

var db_driver = db.getDriverClass(); 

需要提醒的是,kettle版本在不断更新,其内部组件在不同版本之间可能不同。因此在把访问kettle内部组件的代码升级到一个新的版本时,需要做全面的测试。

\

说了那么多,不如去下载示例代码,其写数据库连接信息到一个文本文件,在5.1版本测试。

希望大家一起交流讨论,你们的建议是我的动力。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿