| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
//
// create the source step...
//
String fromstepname = "read from [" + sourceTableName + "]";
TableInputMeta tii = new TableInputMeta(); 网管联盟bitsCN@com
tii.setDatabaseMeta(sourceDBInfo); 网管u家bitscn.net
String selectSQL = "SELECT "+Const.CR;
网管u家www.bitscn.net
for (int i=0;i<sourceFields.length;i++)
网管u家bitscn.net
{
网管朋友网www_bitscn_net
/* modi by chq(www.chq.name): use * to replace the fields,经分析,以下语句可以处理‘*‘ */
if (i>0)
selectSQL+=", ";
else selectSQL+=" ";
网管u家bitscn.net
网管联盟bitsCN_com
selectSQL+=sourceFields[i]+Const.CR; 中国网管联盟bitsCN.com
} 网管有家www.bitscn.net
selectSQL+="FROM "+sourceTableName;
tii.setSQL(selectSQL); 网管u家bitscn.net
StepLoader steploader = StepLoader.getInstance(); 网管u家bitscn.net
网管网www_bitscn_com
String fromstepid = steploader.getStepPluginID(tii); 网管有家www.bitscn.net
StepMeta fromstep = new StepMeta(log, fromstepid, fromstepname, (StepMetaInterface) tii); 网管联盟bitsCN@com
fromstep.setLocation(150, 100); 网管下载dl.bitscn.com
fromstep.setDraw(true); 网管u家u.bitsCN.com
fromstep.setDescription("Reads information from table [" + sourceTableName 网管朋友网www_bitscn_net
+ "] on database [" + sourceDBInfo + "]"); 网管有家bitscn.net
transMeta.addStep(fromstep); 网管u家u.bitscn@com
网管bitscn_com
//
// add logic to rename fields
// Use metadata logic in SelectValues, use SelectValueInfo...
// 网管有家www.bitscn.net
/* 不必改名或映射 add by chq(www.chq.name) on 2006.07.20
网管网www_bitscn_com
SelectValuesMeta svi = new SelectValuesMeta();
网管bitscn_com
svi.allocate(0, 0, sourceFields.length); 网管下载dl.bitscn.com
for (int i = 0; i < sourceFields.length; i++)
网管下载dl.bitscn.com
{
svi.getMetaName()[i] = sourceFields[i]; 网管网www.bitscn.com
svi.getMetaRename()[i] = targetFields[i];
} 网管u家u.bitsCN.com
网管有家bitscn.net
String selstepname = "Rename field names";
String selstepid = steploader.getStepPluginID(svi);
StepMeta selstep = new StepMeta(log, selstepid, selstepname, (StepMetaInterface) svi);
selstep.setLocation(350, 100);
网管联盟bitsCN@com
selstep.setDraw(true);
网管网www.bitscn.com
selstep.setDescription("Rename field names"); 中国网管论坛bbs.bitsCN.com
transMeta.addStep(selstep); 网管网www_bitscn_com
网管网www_bitscn_com
TransHopMeta shi = new TransHopMeta(fromstep, selstep);
transMeta.addTransHop(shi); 网管论坛bbs_bitsCN_com
fromstep = selstep; //设定了新的起点 by chq([link=http://www.chq.name]www.chq.name[/link]) on 2006.07.20 网管有家www.bitscn.net
*/
网管有家www.bitscn.net
// 中国网管联盟bitsCN.com
// Create the target step...
//
网管u家u.bitscn@com
//
// Add the TableOutputMeta step... 网管下载dl.bitscn.com
// 中国网管论坛bbs.bitsCN.com
String tostepname = "write to [" + targetTableName + "]";
网管网www_bitscn_com
TableOutputMeta toi = new TableOutputMeta();
网管u家u.bitsCN.com
toi.setDatabase(targetDBInfo);
toi.setTablename(targetTableName);
toi.setCommitSize(200);
toi.setTruncateTable(true);
网管论坛bbs_bitsCN_com
网管联盟bitsCN_com
String tostepid = steploader.getStepPluginID(toi);
网管网www_bitscn_com
StepMeta tostep = new StepMeta(log, tostepid, tostepname, (StepMetaInterface) toi); 网管下载dl.bitscn.com
tostep.setLocation(550, 100); 网管有家www.bitscn.net
tostep.setDraw(true); 网管u家u.bitscn@com
tostep.setDescription("Write information to table [" + targetTableName + "] on database [" + targetDBInfo + "]");
网管下载dl.bitscn.com
transMeta.addStep(tostep);
网管有家bitscn.net
//
// Add a hop between the two steps...
//
网管有家www.bitscn.net
TransHopMeta hi = new TransHopMeta(fromstep, tostep); 中国网管论坛bbs.bitsCN.com
transMeta.addTransHop(hi); 网管bitscn_com
// OK, if we're still here: overwrite the current transformation...
return transMeta;
}
catch (Exception e)
{
throw new KettleException("An unexpected error occurred creating the new transformation", e);
网管联盟bitsCN_com
}
网管网www_bitscn_com
}
/**
* 1) create a new transformation 中国网管论坛bbs.bitsCN.com
* 2) save the transformation as XML file
* 3) generate the SQL for the target table
* 4) Execute the transformation 网管有家www.bitscn.net
* 5) drop the target table to make this program repeatable
中国网管联盟bitsCN.com
*
中国网管联盟bitsCN.com
* @param args 网管u家u.bitscn@com
*/
网管朋友网www_bitscn_net
public static void main(String[] args) throws Exception
{
网管下载dl.bitscn.com
EnvUtil.environmentInit(); 网管联盟bitsCN_com
// Init the logging... 网管u家bitscn.net
LogWriter log = LogWriter.getInstance("TransBuilder.log", true, LogWriter.LOG_LEVEL_DETAILED);
网管论坛bbs_bitsCN_com
// Load the Kettle steps & plugins 网管网www_bitscn_com
StepLoader stloader = StepLoader.getInstance();
if (!stloader.read())
网管下载dl.bitscn.com
{
log.logError("TransBuilder", "Error loading Kettle steps & plugins... stopping now!"); 网管下载dl.bitscn.com
return; 网管u家u.bitsCN.com
}
网管联盟bitsCN@com
// The parameters we want, optionally this can be 网管网www_bitscn_com
String fileName = "NewTrans.xml";
网管朋友网www_bitscn_net
String transformationName = "Test Transformation";
String sourceDatabaseName = "source";
中国网管论坛bbs.bitsCN.com
String sourceTableName = "testuser.source_table"; 网管u家u.bitsCN.com
String sourceFields[] = {
网管网www_bitscn_com
"*" 网管有家bitscn.net
}; 网管联盟bitsCN_com
网管u家u.bitscn@com
String targetDatabaseName = "target"; 网管bitscn_com
String targetTableName = "testuser.target_table";
String targetFields[] = { 网管有家bitscn.net
"*"
}; 网管bitscn_com
// Generate the transformation.
网管u家u.bitscn@com
TransMeta transMeta = TransBuilder.buildCopyTable(
transformationName, 网管网www_bitscn_com
sourceDatabaseName, 网管论坛bbs_bitsCN_com
sourceTableName, 网管bitscn_com
sourceFields,
网管u家bitscn.net
targetDatabaseName,
targetTableName, 网管朋友网www_bitscn_net
targetFields
中国网管联盟bitsCN.com
);
网管下载dl.bitscn.com
// Save it as a file:
String xml = transMeta.getXML(); 网管u家bitscn.net
DataOutputStream dos = new DataOutputStream(new FileOutputStream(new File(fileName)));
中国网管联盟bitsCN.com
dos.write(xml.getBytes("UTF-8"));
中国网管论坛bbs.bitsCN.com
dos.close();
网管网www.bitscn.com
System.out.println("Saved transformation to file: "+fileName);
中国网管联盟bitsCN.com
// OK, What's the SQL we need to execute to generate the target table? 网管论坛bbs_bitsCN_com
String sql = transMeta.getSQLStatementsString();
网管u家u.bitsCN.com
网管下载dl.bitscn.com
// Execute the SQL on the target table: 网管网www_bitscn_com
Database targetDatabase = new Database(transMeta.findDatabase(targetDatabaseName));
targetDatabase.connect(); 网管朋友网www_bitscn_net
targetDatabase.execStatements(sql); 网管bitscn_com
中国网管联盟bitsCN.com
// Now execute the transformation...
网管论坛bbs_bitsCN_com
Trans trans = new Trans(log, transMeta);
trans.execute(null);
trans.waitUntilFinished(); 网管朋友网www_bitscn_net
网管有家www.bitscn.net
// For testing/repeatability, we drop the target table again
网管下载dl.bitscn.com
/* modi by chq([link=http://www.chq.name]www.chq.name[/link]) on 2006.07.20 不必删表 网管联盟bitsCN_com
//targetDatabase.execStatement("drop table "+targetTableName); 网管网www_bitscn_com
targetDatabase.disconnect(); 网管网www_bitscn_com
}
网管u家u.bitscn@com
网管u家u.bitscn@com
}
网管下载dl.bitscn.com
|
0
|
评论加载中…