JAvaプログラム生成kettle変換ktrファイル
7167 ワード
説明:C:UsersAdministratoresapiの下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+"
"+databasesXML[0]+"
"+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;
}
}