1.调用本地文件
public static void runNativeTransformation(String[] params,String filename) {
try {
//初始化
KettleEnvironment.init();
EnvUtil.environmentInit();
TransMeta transMeta = new TransMeta(filename);
//转换
Trans trans = new Trans(transMeta);
//执行
trans.execute(params); // You can pass arguments instead of null.
//等待结束
trans.waitUntilFinished();
if ( trans.getErrors() > 0 ){
throw new RuntimeException( "There were errors during transformation execution." );
}
}
catch (KettleException e ) {
// TODO Put your exception-handling code here.
System.out.println(filename);
System.out.println("-------------------------------------------------");
System.out.println(e);
}
}
2.调用资源库文件(两种,思路是一样)
第一种:
public static void runRepositoryTransformation(String filename){
String repositoryName = "kettle_repository";
String repositoryPassword = "admin";
String repositoryUserName = "admin";
try{
KettleEnvironment.init();
EnvUtil.environmentInit();
RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
repositoriesMeta.readData(); //资源库元数据都在Repositories.xml中,该方法用来读取
RepositoryMeta repositoryMeta = repositoriesMeta.findRepository(repositoryName);
PluginRegistry registry = PluginRegistry.getInstance(); //获得资源库对象
Repository repository =registry.loadClass(RepositoryPluginType.class,repositoryMeta,Repository.class);
repository.init(repositoryMeta);
repository.connect(repositoryUserName,repositoryPassword);
RepositoryDirectoryInterface directory = repository.findDirectory("/test"); //资源库中文件夹名称
TransMeta transformationMeta = ((Repository) repository).loadTransformation(filename, directory, null, true, null ) ;
Trans trans = new Trans(transformationMeta);
trans.execute(null);
trans.waitUntilFinished();
if ( trans.getErrors() > 0 ){
throw new RuntimeException( "There were errors during transformation execution." );
}
} catch (KettleException e) {
e.printStackTrace();
}
}
第二种:
public static void runRepositoryTransformation(String filename){
String repositoryXML="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<connection>" +
"<name>kettle_repository</name>" +
"<server>192.168.1.124</server>" +
"<type>Mysql</type>" +
"<access>Native</access>" +
"<database>kettle_repository</database>" +
"<port>3306</port>" +
"<username>root</username>" +
"<password>123456</password>" +
"</connection>";
String repositoryName = "kettle_repository";
String repositoryPassword = "admin";
String repositoryUserName = "admin";
try {
KettleEnvironment.init();
EnvUtil.environmentInit();
KettleDatabaseRepository repository = new KettleDatabaseRepository();
// DatabaseMeta dataMeta =
// new DatabaseMeta("kettle_repository","MySQL","JDBC","192.168.1.124","kettle_repository","3306","root","123456");
DatabaseMeta dataMeta =
new DatabaseMeta(repositoryXML);
KettleDatabaseRepositoryMeta kettleDatabaseMeta =
new KettleDatabaseRepositoryMeta("kettle_repository", "kettle_repository", "king description",dataMeta);
repository.init(kettleDatabaseMeta);
repository.connect("admin","admin");
RepositoryDirectoryInterface directory = repository.findDirectory("/test"); //资源库中文件夹名称
TransMeta transformationMeta = ((Repository) repository).loadTransformation(filename, directory, null, true, null ) ;
Trans trans = new Trans(transformationMeta);
trans.execute(null);
trans.waitUntilFinished();
if ( trans.getErrors() > 0 ){
throw new RuntimeException( "There were errors during transformation execution." );
}
} catch (KettleException e) {
e.printStackTrace();
}
}
https://zhuanlan.zhihu.com/p/56341917现今软件市场上有很多终端工具,比如:secureCRT、Putty、telnet,等等。secureCRT其实也是一款很强大的终端工具,良许也使用过它很长时间,但是,它毕竟是收费软件,在公司里不允许使用。而且在良许自己的电脑里一量输入大写,整个界面就乱了(原因未知,未深究),这是直接导致良许放弃它的原因。而Pu...
全网最详细的Hive文章系列,强烈建议收藏加关注!后面更新文章都会列出历史文章目录,帮助大家回顾知识重点。目录历史文章前言Hive基本概念一、Hive介绍1、什么是Hive2、为什么使用Hive3、Hive的特点二、Hive架构1、架构图2、基本组成3、Hive与传统数据库对比历史文章深夜凌晨女朋友问什么是数据仓库,我的回答让她惊讶,然后发现。。。百度、阿里、腾讯平台架构都熟悉,小米大.
1)romInit(),位于romInit.s文件中,功能如下A)初始化CPU,部分内存,基本的硬件。如果初始化正确,则内存LOCAL_MEM_LOCAL_ADRS到LOCAL_MEM_LOCAL_ADRS+LOCAL_MEM_SIZE是可读可写的。B)禁止中断,清除CACHE,为下一个函数romStart(位于bootInit.c中)的执行配置启动类型。2)romStart()位于bootIni...
这个教程也是从其他多篇文章综合起来,然后写的更详细。Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得...
跨站请求伪造漏洞CSRF跨站请求伪造漏洞CSRF一、问题描述:二、整改建议:三、案例:1. 客户端进行CSRF防御2. 服务端进行CSRF防御跨站请求伪造漏洞CSRF一、问题描述:CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,
普及权限控制的方法、常见非授权访问漏洞以及水平越权与垂直越权的成因与利用方法、修复方法权限控制某个主体(subject)对某个客体(object)需要实施某种操作(operation),系统对这种操作的限制就是权限控制。在一个安全的系统中,通过身份验证来确认主体的身份。客体是一种资源,是主体发起请求的对象。主体所能做什么,就是权限,权限可以细分为不同的能力。例如:在Linux文件系统中,将权限分为读、写、执行三种能力。 权限控制一般分为两个步骤,身份验证与授权。首先进行的是身份验证的工作...
1.执行main方法时弹出 Error: A JNI error has occurred, please check your installation and try againe2.执行后控制台报的错误3.进入ClassLoader.java中,4.原因:在开始执行main方法时就已经加载了以java开头的包路径,所有类加载器在加载文件时会抛出异常5.解决方法:改包...
本文章是【opencv】goodFeaturesToTrack源码分析-1的后续,主要描述Shi-Tomasi角点检测算法原理及opencv实现。1、算法原理Shi-Tomasi算法是Harris算法的改进,在Harris算法中,是根据协方差矩阵M的两个特征值的组合来判断是否角点。而在Shi-Tomasi算法中,是根据较小的特征值是否大于阈值来判断是否角点。 这个判断依据是:较小的特征值表示在该特
# Copyright 2015 The TensorFlow Authors. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# Y
【代码】Android开机自动循环播放视频。
mysql数据表设计课程内容性能优化介绍与影响因素问题发现-1. Linux管道机制 命令linux系统搭建省略:管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点:*** 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要...
深度学习和自然语言处理中的attention和memory机制