说明:C:\Users\Administrator\esapi下ESAPI.properties和validation.properties
package rh; import java.io.File; public class TransDemo { public static TransDemo transDemo; /** * 两个库中的表名 */ public static String bjdt_tablename = "ANSWER"; public static String kettle_tablename = "ANSWER"; /** * 数据库连接信息,适用于DatabaseMeta其中 一个构造器DatabaseMeta(String xml) */ public static final String[] databasesXML = { "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<connection>" + "<name>bjdt</name>" + "<server>127.0.0.1</server>" + "<type>Oracle</type>" + "<access>Native</access>" + "<database>orcl</database>" + "<port>1521</port>" + "<username>queryneea</username>" + "<password>queryneea</password>" + "</connection>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<connection>" + "<name>kettle</name>" + "<server>127.0.0.1</server>" + "<type>Oracle</type>" + "<access>Native</access>" + "<database>orcl</database>" + "<port>1521</port>" + "<username>kscenter20151207</username>" + "<password>kscenter</password>" + "</connection>" }; /** * @param args */ public static void main(String[] args) { try { KettleEnvironment.init(); transDemo = new TransDemo(); TransMeta transMeta = transDemo.generateMyOwnTrans(); String transXml = transMeta.getXML(); //System.out.println("transXml:"+transXml); String transName = "F:\\ETL\\kettle\\例子\\测试\\复制单表\\copy-one-table.ktr"; File file = new File(transName); FileUtils.writeStringToFile(file, transXml, "UTF-8"); //System.out.println(databasesXML.length+"\n"+databasesXML[0]+"\n"+databasesXML[1]); } catch (Exception e) { e.printStackTrace(); return; } } /** * 生成一个转化,把一个数据库中的数据转移到另一个数据库中,只有两个步骤,第一个是表输入,第二个是表插入与更新操作 * @return * @throws KettleXMLException */ public TransMeta generateMyOwnTrans() throws KettleXMLException{ System.out.println("************start to generate my own transformation***********"); TransMeta transMeta = new TransMeta(); //设置转化的名称 transMeta.setName("insert_update"); //添加转换的数据库连接 for (int i=0;i<databasesXML.length;i++){ DatabaseMeta databaseMeta = new DatabaseMeta(databasesXML[i]); transMeta.addDatabase(databaseMeta); } //registry是给每个步骤生成一个标识Id用 PluginRegistry registry = PluginRegistry.getInstance(); //****************************************************************** //第一个表输入步骤(TableInputMeta) TableInputMeta tableInput = new TableInputMeta(); String tableInputPluginId = registry.getPluginId(StepPluginType.class, tableInput); //给表输入添加一个DatabaseMeta连接数据库 DatabaseMeta database_bjdt = transMeta.findDatabase("bjdt"); tableInput.setDatabaseMeta(database_bjdt); String select_sql = "SELECT ID, NAME, CODE FROM "+bjdt_tablename; tableInput.setSQL(select_sql); //添加TableInputMeta到转换中 StepMeta tableInputMetaStep = new StepMeta(tableInputPluginId,"table input",tableInput); //给步骤添加在spoon工具中的显示位置 tableInputMetaStep.setDraw(true); tableInputMetaStep.setLocation(100, 100); transMeta.addStep(tableInputMetaStep); //****************************************************************** //****************************************************************** //第二个步骤插入与更新 InsertUpdateMeta insertUpdateMeta = new InsertUpdateMeta(); String insertUpdateMetaPluginId = registry.getPluginId(StepPluginType.class,insertUpdateMeta); //添加数据库连接 DatabaseMeta database_kettle = transMeta.findDatabase("kettle"); insertUpdateMeta.setDatabaseMeta(database_kettle); //设置操作的表 insertUpdateMeta.setTableName(kettle_tablename); //设置用来查询的关键字 insertUpdateMeta.setKeyLookup(new String[]{"ID"}); insertUpdateMeta.setKeyStream(new String[]{"ID"}); insertUpdateMeta.setKeyStream2(new String[]{""});//一定要加上 insertUpdateMeta.setKeyCondition(new String[]{"="}); //设置要更新的字段 String[] updatelookup = {"ID","NAME","CODE"} ; String [] updateStream = {"ID","NAME","CODE"}; Boolean[] updateOrNot = {false,true,true,true,true,true,true}; insertUpdateMeta.setUpdateLookup(updatelookup); insertUpdateMeta.setUpdateStream(updateStream); insertUpdateMeta.setUpdate(updateOrNot); String[] lookup = insertUpdateMeta.getUpdateLookup(); //System.out.println("******:"+lookup[1]); //System.out.println("insertUpdateMetaXMl:"+insertUpdateMeta.getXML()); //添加步骤到转换中 StepMeta insertUpdateStep = new StepMeta(insertUpdateMetaPluginId,"insert_update",insertUpdateMeta); insertUpdateStep.setDraw(true); insertUpdateStep.setLocation(250,100); transMeta.addStep(insertUpdateStep); //****************************************************************** //****************************************************************** //添加hop把两个步骤关联起来 transMeta.addTransHop(new TransHopMeta(tableInputMetaStep, insertUpdateStep)); System.out.println("***********the end************"); return transMeta; } }
相关推荐
kettle实验对应ktr文件,http://blog.csdn.net/qq_36743482/article/details/79347699
生成kettle作业的Java代码
使用java程序调用kettle的sap组件,由于从kettle7.0版本开始,sap组件作为插件形式加载,所以在项目工程中需要修改相应的配置文件及jar才可以被加载和调用。
简单的Java调用kettle转换
Java获取kettle的结果集
java中调用kettle中的job与转换源码,其中kettle用的是5.2.0.0的版本。已经测试过可以调用访问,并且可以传入参数调用。有需要的可直接拿去使用。
使用java,kettle模版生成kettle文件
kettle 解析xml数据,xml多层分组嵌套,xml stax方法,完整解析案例使用(包含xml文件以及ktr文件)。ETL大数据迁移,数据清洗。XML Input Stream (StAX) 方法
利用kettle的api运用Java代码完成数据转换到excel和数据库源码,自己看了2天kettle的源码,写的2个简单小例子,供大家参考,网上搜这个资料太少了!希望其他人也能上传些相关资料!
kettle转换数据的步骤,有好多种的转换
提供给java后台开发,kettle调用类使用,必须依赖kettle的jar文件
java集成kettle所有jar包
kettle转换xml(XML Input Stream (StAX))实例,包含xml和ktr
java集成kettle执行作业文件 java集成kettle执行作业文件
kettle内存溢出(Java heap space)以及解决方法
kettle使用命令行来运行ktr和kjb
用于java调用kettlektr文件的jar,在kettle官网下载图形化界面里面也包含
生成 100 个随机数,随机数取值于[0,100)之间, 计算小于等于 50 的随机数个数和 大于50 的随机数个 数。 并把这两个统计数字放在数据库表的一行的两列中, 即输出的结果有一行,一行包括两列,每列是一个统 计值...
java远程调用kettle说明与代码.pdf