使用javascript访问kettle内部组件,javascriptkettle
使用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版本测试。
希望大家一起交流讨论,你们的建议是我的动力。
你好 朋友! 你用的是什么浏览器的你没说 那我就把常用浏览器对javascript的设置都给你说一下~
Firefox
在菜单栏中选择“工具”–>“选项”–>“内容”中可见到“启用JavaScript”的选项。
Internet Explorer(IE)
最不好找,菜单栏中“工具”中选择“Internet选项”–>“安全”选项卡–>选择“Internet”(蓝色的小地球)–>“自定义级别”–>找到“脚本”下的“Java小程序脚本”中进行启用和禁用。
Opera
在菜单栏中选择“工具”–>“首选项”–>“高级”选项卡–>“内容”中的“允许使用JavaScript”可以设置。
Safari
以最新的Beta4英文版为准,在“Preferences”–>“Security”选项卡中的“Enable JavaScript”,勾选上则是打开,反之是禁用。
Google Chrome
目前Google Chrome还不支持在GUI里进行Javascript的开启和禁用,而是要通过在快捷方式中添加参数的方法。
要禁用Javascript需要在Chrome的快捷方式的“属性”–>“快捷方式”选项卡–>“目标”中最后加入“ -disable-javascript”。
外还有其它一些参数:
-disable-images 禁用图片
-disable-java 禁用Java(非Javascript)
-disable-plugins 禁用插件
-disable-popup-blocking 禁用防弹窗功能
-start-maximized 启动时最大化
var obj = new ActiveXObject("name");
obj.method(args...);