栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

代码生成ktr文件

代码生成ktr文件

目录

代码生成ktr        

spoon界面查看


代码生成ktr        

        从之前的一个Kettle交换代码来看,应该可以生成ktr文件,在spoon页面上展示。

        代码如下:

	@Test
	public void exchangeMysql2Mysql() throws KettleException{
		//源数据库连接
		String mysql_src = "" +
                "" +
                "mysql_src" +
                "192.168.10.92" +
                "MySQL" +
                "Native" +
                "test" +
                "3306" +
                "root" +
                "123456" +
                "";
		
		//目标数据库连接
        String mysql_dest = "" +
                "" +
                "mysql_dest" +
				"192.168.10.92" +
				"MySQL" +
				"Native" +
				"test" +
				"3306" +
				"root" +
				"123456" +
				"";
        
        Databasemeta srcDatabasemeta = new Databasemeta(mysql_src);
        Databasemeta destDatabasemeta = new Databasemeta(mysql_dest);
        
        //创建转换元信息
        Transmeta transmeta = new Transmeta();
		transmeta.setName("mysql8之间的交换");
		
		//设置源和目标
		transmeta.addDatabase(srcDatabasemeta);
		transmeta.addDatabase(destDatabasemeta);
		
		
		PluginRegistry registry = PluginRegistry.getInstance();
		TableInputmeta tableInputmeta = new TableInputmeta();
		String tableInputPluginId = registry.getPluginId(StepPluginType.class,
				tableInputmeta);
		
		tableInputmeta.setDatabasemeta(srcDatabasemeta);
		//设置查询条件
		String selectSql = "select id ,name from user_info_src";
		tableInputmeta.setSQL(selectSql);
		
		Stepmeta tableInputStepmeta = new Stepmeta(tableInputPluginId,
				"tableInput", (StepmetaInterface) tableInputmeta);

		//给步骤添加在spoon工具中的显示位置
		tableInputStepmeta.setDraw(true);
		tableInputStepmeta.setLocation(100, 100);

		transmeta.addStep(tableInputStepmeta);
		
		TableOutputmeta tableOutputmeta = new TableOutputmeta();
		tableOutputmeta.setDatabasemeta(destDatabasemeta);
		
		//设置目标表的 schema和表名
		tableOutputmeta.setSchemaName(null);
		tableOutputmeta.setTablename("user_info_dest");
		
		String tableOutputPluginId = registry.getPluginId(StepPluginType.class, tableOutputmeta);
		Stepmeta tableOutputStep = new Stepmeta(tableOutputPluginId, "tableOutput" , (StepmetaInterface) tableOutputmeta);

		//给步骤添加在spoon工具中的显示位置
		tableOutputStep.setDraw(true);
		tableOutputStep.setLocation(200, 200);

		//将步骤添加进去
		transmeta.addStep(tableOutputStep);
		
		//将步骤和上一步关联起来
		transmeta.addTransHop(new TransHopmeta(tableInputStepmeta, tableOutputStep));

		String xml = transmeta.getXML();
		System.out.println(xml);
		
        
	}

        上述代码是完整版,但其实只需要在之前的交换代码中添加指定Stepmeta节点的位置即可,

//给步骤添加在spoon工具中的显示位置
		tableInputStepmeta.setDraw(true);
		tableInputStepmeta.setLocation(100, 100);

//给步骤添加在spoon工具中的显示位置
		tableOutputStep.setDraw(true);
		tableOutputStep.setLocation(200, 200);

        当我们看ktr文件时,发现是一个xml内容,所以试着在Transmeta中获取XML内容,

String xml = transmeta.getXML();
		System.out.println(xml);

        输出的XML如下,这个就是ktr的内容,只不过和spoon界面生成的少了一个头部,


  
    mysql8之间的交换
    
    
    
    Normal
    /
    
    
    





ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDTRANSNAMEYTRANSNAMESTATUSYSTATUSLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSSTARTDATEYSTARTDATEENDDATEYENDDATELOGDATEYLOGDATEDEPDATEYDEPDATEREPLAYDATEYREPLAYDATELOG_FIELDYLOG_FIELDEXECUTING_SERVERNEXECUTING_SERVEREXECUTING_USERNEXECUTING_USERCLIENTNCLIENT


ID_BATCHYID_BATCHSEQ_NRYSEQ_NRLOGDATEYLOGDATETRANSNAMEYTRANSNAMESTEPNAMEYSTEPNAMESTEP_COPYYSTEP_COPYLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSINPUT_BUFFER_ROWSYINPUT_BUFFER_ROWSOUTPUT_BUFFER_ROWSYOUTPUT_BUFFER_ROWS
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDLOG_DATEYLOG_DATELOGGING_OBJECT_TYPEYLOGGING_OBJECT_TYPEOBJECT_NAMEYOBJECT_NAMEOBJECT_COPYYOBJECT_COPYREPOSITORY_DIRECTORYYREPOSITORY_DIRECTORYFILENAMEYFILENAMEOBJECT_IDYOBJECT_IDOBJECT_REVISIONYOBJECT_REVISIONPARENT_CHANNEL_IDYPARENT_CHANNEL_IDROOT_CHANNEL_IDYROOT_CHANNEL_ID
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDLOG_DATEYLOG_DATETRANSNAMEYTRANSNAMESTEPNAMEYSTEPNAMESTEP_COPYYSTEP_COPYLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSLOG_FIELDNLOG_FIELD
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDLOG_DATEYLOG_DATEMETRICS_DATEYMETRICS_DATEMETRICS_CODEYMETRICS_CODEMETRICS_DEscriptIONYMETRICS_DEscriptIONMETRICS_SUBJECTYMETRICS_SUBJECTMETRICS_TYPEYMETRICS_TYPEMETRICS_VALUEYMETRICS_VALUE
0.0 0.0 10000 50 50 N Y 50000 Y N 1000 100 - 2021/11/12 11:38:37.820 - 2021/11/12 11:38:37.820 mysql_dest 192.168.10.92 MYSQL Native test 3306 root Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c PORT_NUMBER3306 mysql_src 192.168.10.92 MYSQL Native test 3306 root Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c PORT_NUMBER3306 tableInputtableOutputY tableInput TableInput Y 1 none mysql_src select id ,name from user_info_src N N N 100 100 Y tableOutput TableOutput Y 1 none mysql_dest
user_info_dest
1000 N N Y N N N N N N N 200 200 Y N

        这里没有写到文件中,直接输出到控制台,然后拷贝到txt文件中,加上这个头部,最后把文件后缀名改为ktr。

spoon界面查看

        可以看到在spoon工具中是能展示的,

        

        

        表输入就是在代码中写的SQL,

        

        数据库连接也是在代码XML 中写的, 

 

        表输出也正常,

 

所以在代码中生成一个ktr文件就完成,这样就能很直观的看到代码生成和界面的区别,也能很快的找到错误。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号