public List<String> getConfig(KettleResource resourcein,String customSql) throws KettleDatabaseException, SQLException{
String[] databasesXML = {
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<connection>" +
"<name>"+resourcein.getrName()+"</name>" +
"<server>"+resourcein.getrServer()+"</server>" +
"<type>"+resourcein.getrType()+"</type>" +
"<access>"+resourcein.getrAccess()+"</access>" +
"<database>"+resourcein.getrDatabase()+"</database>" +
"<port>"+resourcein.getrPort()+"</port>" +
"<username>"+resourcein.getrUsername()+"</username>" +
"<password>"+resourcein.getrPassword()+"</password>" +
"</connection>"
DatabaseMeta databaseMeta = null;
try {
databaseMeta = new DatabaseMeta(databasesXML[0]);
} catch (KettleXMLException e) {
e.printStackTrace();
Database database = null;
database = new Database(null,databaseMeta);
database.connect();
// String sql = null;
// /**Mysql的方式*/
// if(resourcein.getrType().toUpperCase().equals("MYSQL")){
// sql="SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \""+resourcein.getrDatabase()+"\" ";
// }
ResultSet resultSet;
resultSet = database.openQuery(customSql);
List<String> list = new ArrayList<String>();
while(resultSet.next()){
String a = resultSet.getString("TABLE_NAME");
// System.out.println("表名"+a);
list.add(a);
return list;
下面为参数1的属性代码
public class KettleResource implements Serializable {
private Integer id;
* 资源库描述
@Column(name = "r_name")
private String rName;
* 主机地址
@Column(name = "r_server")
private String rServer;
* 数据库类型
@Column(name = "r_type")
private String rType;
* 连接方式
@Column(name = "r_access")
private String rAccess;
* 数据库名
@Column(name = "r_database")
private String rDatabase;
* 端口号
@Column(name = "r_port")
private Integer rPort;
* 用户名
@Column(name = "r_username")
private String rUsername;
@Column(name = "r_password")
private String rPassword;
private static final long serialVersionUID = 1L;
* @return id
public Integer getId() {
return id;
* @param id
public void setId(Integer id) {
this.id = id;
* 获取资源库描述
* @return r_name - 资源库描述
public String getrName() {
return rName;
* 设置资源库描述
* @param rName 资源库描述
public void setrName(String rName) {
this.rName = rName;
* 获取主机地址
* @return r_server - 主机地址
public String getrServer() {
return rServer;
* 设置主机地址
* @param rServer 主机地址
public void setrServer(String rServer) {
this.rServer = rServer;
* 获取数据库类型
* @return r_type - 数据库类型
public String getrType() {
return rType;
* 设置数据库类型
* @param rType 数据库类型
public void setrType(String rType) {
this.rType = rType;
* 获取连接方式
* @return r_access - 连接方式
public String getrAccess() {
return rAccess;
* 设置连接方式
* @param rAccess 连接方式
public void setrAccess(String rAccess) {
this.rAccess = rAccess;
* 获取数据库名
* @return r_database - 数据库名
public String getrDatabase() {
return rDatabase;
* 设置数据库名
* @param rDatabase 数据库名
public void setrDatabase(String rDatabase) {
this.rDatabase = rDatabase;
* 获取端口号
* @return r_port - 端口号
public Integer getrPort() {
return rPort;
* 设置端口号
* @param rPort 端口号
public void setrPort(Integer rPort) {
this.rPort = rPort;
* 获取用户名
* @return r_username - 用户名
public String getrUsername() {
return rUsername;
* 设置用户名
* @param rUsername 用户名
public void setrUsername(String rUsername) {
this.rUsername = rUsername;
* 获取密码
* @return r_password - 密码
public String getrPassword() {
return rPassword;
* 设置密码
* @param rPassword 密码
public void setrPassword(String rPassword) {
this.rPassword = rPassword;
对向前兼容性的推荐 :如果想要动态地创造Transformation (例如:从元数据),使用XML文件方法(KTR)而不是使用API。 XML文件兼容Kettle所有版本,同样对job有效的。
下面的例子进行以下操作:
1创建Transformation
2保存Transformation信息到XML文件
3获取在目标表操作的SQL
4执行Transformation
5drop目标表,使这个示例可以重复。
感言:网络的确帮助了我们,但是kettle的资料真实太少,英语学好是有必要的;
整体思路:创建javaproject→导入kettle所需要的包→实现kettle中的对象→重写对象内容→调用对象执行;
1 package kettle;
3 //需要导入的包
4 import java.util.List;
5 import java.util.Map;
本资源主要内容包括(资源有保证,都是干货,一看就会):
1.KETTLE远程服务配置及启动说明。
2.JAVA传参调用KETTLE远程服务执行任务实现过程及注意事项说明。
3.附件包括:配套说明文档、代码包、KETLLE任务测试文件及数据库脚本。
依赖的jar包以pom的形式引入,有诸多版本,如果与kettle的版本不匹配则会调用失败。因为在java代码里会初始化插件来执行任务,查看插件版本9.0.0.0-423.
仓库镜像地址:
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>https://repo.orl.eng.hitachivantara.com/arti
Kettle软件主要提供了4种数据库连接方式,分别是JDBC、ODBC、OCI、JNDI,其中OCI只适用于Oracle。本文重点对使用比较普遍的JDBC和JNDI连接方式进行探讨。
* * 连接到资源库
private static KettleDatabaseRepository RepositoryCon() throws KettleException {
// 初始化环境
if (!KettleEnvironment.isInitialized()) {
已知的连接资源库方式有两种,一种是通过读取XML配置连接,一种是在代码中动态绑定资源库
Java连接kettle需要配置一个译码插件,该插件通过xml配置,并将该xml放至classpath路径下,名称为:kettle-password-encoder-plugins.xml,这个xml有个配置的模板在源码中,位于下列包中
运行时绑定资源库
private st...