Kettle API - Java调用示例
对向前兼容性的推荐:如果想要动态地创造Transformation (例如:从元数据),使用XML文件方法(KTR)而不是使用API。XML文件兼容Kettle所有版本,同样对job有效的。
1.下面的例子进行以下操作:
1创建Transformation
2保存Transformation信息到XML文件
3获取在目标表操作的SQL
4执行Transformation
5drop目标表,使这个示例可以重复。
// 创建“复制表”的transformation元数据.
TransMeta transMeta = TransBuilder.buildCopyTable(
transformationName,
sourceDatabaseName,
sourceTableName,
sourceFields,
targetDatabaseName,
targetTableName,
targetFields
);
// 保存为文件:
String xml = transMeta.getXML();
DataOutputStream dos = new DataOutputStream(new FileOutputStream(new File(fileName))); dos.write(xml.getBytes("UTF-8"));
dos.close();
System.out.println("Saved transformation to file: "+fileName);
//获取在目标表操作的SQL
String sql = transMeta.getSQLStatementsString();
// 在目标表执行sql:
Database targetDatabase = new Database(transMeta.findDatabase(targetDatabaseName)); targetDatabase.connect();
targetDatabase.execStatements(sql);
//现在执行transformation
Trans trans = new Trans(transMeta);
trans.execute(null);
trans.waitUntilFinished();
//为了重复测试,再次drop目标表
targetDatabase.execStatement("drop table "+targetTableName);
targetDatabase.disconnect();