数据清洗之kettle以及集成到java项目

一、kettle工具下载

链接: https://pan.baidu.com/s/13Mx-QJkY-5dY-nDIpuZAzw 提取码: x146

pdi-ce-8.1.0.0.zip就是kettle软件   下载之后解压     进入文件夹根目录点击Spoon.bat就能开启客户端

 

 二、kettle使用

  1.需要连接上两个数据库   一个是你想要copy的库    还有一个是你自己的库    我这里是需要从一个oracle库拿到数据    然后放入到我这边的mysql数据库

  2.右键DB连接   新建连接

3.我这里使用的是oracle和mysql需要两个连接包   在我网盘链接里有  ojdbc14-10.2.0.2.0.jar和mysql-connector-java-5.1.41.jar     拷贝放入到kettle的lib下上一步就可连接成功

4.然后就是两个库的关联映射  点击文件---新建----转换   将以下两个  表输入和插入/更新拖到转换之中   用shift将两个连接起来   效果如下

 

 

5.点击表输入  连接上你想要拷贝数据库的源数据库   获取sql语句就是查询你想要的表的数据

 

6.点击 插入更新  连接上你的本地数据库   浏览找到对应表  关联上两个表的唯一标示id  类似主键关联  kettle根据这个判断插入还是更新

然后下面关联上你想要更新的字段点确定就可以跑起来了

7.这样你就可以从一个库同步数据到你的库    你可以在你本机windows下运行也可以在linux系统下部署kettle  然后可以新建job来调用转换  实现定时更新数据

保存这个转换你可以得到一个.ktr文件  纯Java编写的可以集成到Java项目之中

 

 三、集成到java项目

 1.以上 的方式可以拿到数据   不过部署到linux系统由于kettle有点大   再去服务器中调用   想想还是算了   还是集成到Java项目中更合理

 

2.集成到java项目需要几个包

<!-- kettle相关jar包 -->
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>8.1.0.0-365</version>
</dependency>

<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>8.1.0.0-365</version>
</dependency>

<dependency>
<groupId>pentaho</groupId>
<artifactId>metastore</artifactId>
<version>8.1.0.0-365</version>
</dependency>

<dependency>
<groupId>org.apache</groupId>
<artifactId>commons-vfs2</artifactId>
<version>2.2</version>
</dependency>

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>17.0</version>
</dependency>

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>

<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>

<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.2.0</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>

<!-- kettle jar包结束 -->

3.jar包我分享的网盘有   国内镜像没有kettle相关包  可以把我的包加入你maven的本地仓库中就好   有些是没用的  根据上面我给的pom加就好

 

4.创建一个service类   调用kettle的转换生成的.ktr文件就可以集成到java中  然后我们可以使用spring定时调度框架Task定时调用这个类就实现了定时更新数据  是不是很方便啊  嘿嘿嘿

@Service("getCompanyInfoService")
public class GetCompanyInfoService {

/*

//main方法用于测试
 public static void main(String[] args) {

//ktr文件路径 String filePath =CompanyAndVehicleInfo.companyPath; //指定xml解析

 System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
 runKtr(filePath)
;

                }

*/

public static void runKtr() {
// ktr文件路径
String filePath = CompanyAndVehicleInfo.companyPath;
// 指定xml解析
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
try {
// 初始化
KettleEnvironment.init();
// 创建ktr元对象
TransMeta transMeta = new TransMeta(filePath);
// 创建ktr
Trans trans = new Trans(transMeta);
// 执行ktr
trans.execute(null);
// 等待执行完毕
trans.waitUntilFinished();
// 判断执行是否出错
if (trans.getErrors() > 0) {
System.err.println("文件执行出错!!!!!!!!");
}

} catch (KettleException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

5.Task类

@Component
@EnableScheduling
public class CompanyAndCycleTask {
@Autowired
private GetCompanyInfoService getCompanyInfoService;

// 设置每天2.00
@Scheduled(cron = "0 0 2 * * ?")
@Scheduled(fixedRate = 1000 * 60 * 10)
public void getCompanyInformation() {
getCompanyInfoService.runKtr();

}

 

我的博客园地址:https://www.cnblogs.com/unrulywind/

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: kettle是一个开源的ETL工具,用于数据集成和转换任务。kettle 9.3是kettle的一个版本,基于Java语言开发,提供了强大的ETL功能和丰富的工具集。 kettle 9.3的Java包是指用于Java语言开发的kettle库。这个包包含了kettle的核心功能和相关的API,可以通过引入这个包来实现任意自定义ETL任务的开发。 使用kettle 9.3的Java包,我们可以编写Java代码来实现以下任务: 1. 数据抽取和加载:可以通过API从不同的数据源中抽取数据,并将数据加载到目标数据库中。可以支持各种数据格式和数据库类型,包括CSV文件、Excel文件、关系型数据库等。 2. 数据转换和清洗:可以使用转换步骤来对数据进行转换和清洗操作,如数据过滤、字段映射、计算列等。可以通过编写Java代码来定义自定义的转换操作,实现更复杂的数据处理逻辑。 3. 数据输出和导出:可以将数据导出到不同的目标,如文件、数据库、WEB服务等。可以通过API来配置导出选项和格式,实现灵活的数据输出。 除了上述功能,kettle 9.3的Java包还提供了很多其他的功能和工具,如调度任务、监控任务运行状态、数据质量检查等。可以根据具体的需求选择合适的API进行开发。 总之,kettle 9.3的Java包是一个强大的工具包,提供了丰富的功能和工具,方便开发人员进行ETL任务的开发和管理。无论是简单的数据转换还是复杂的数据集成任务,都可以通过kettle 9.3的Java包来实现。 ### 回答2: Kettle 9.3是一种基于Java数据集成软件,用于数据的提取、转换和加载(ETL)过程。该软件提供了一个可视化的用户界面,使用户能够轻松地设计和执行不同的数据集成操作。 Kettle 9.3 Java包是Kettle 9.3提供的用于开发者的Java类库。通过使用这个Java包,开发者可以通过代码的方式来操作和控制Kettle的各种功能。这使得开发者能够根据自己的需求来定制和扩展Kettle软件,以满足特定的数据集成要求。 Kettle 9.3 Java包包含了各种不同的类和方法,用于处理数据连接、转换、加载等操作。开发者可以使用这些类和方法来创建和配置数据源、定义转换规则、执行数据加载等任务。通过编写Java代码,开发者可以灵活地控制数据集成流程,并与其他Java应用程序或系统进行集成Kettle 9.3 Java包提供了丰富的文档和示例代码,用于帮助开发者理解和使用这个包。开发者可以参考这些文档和示例代码,快速上手和应用KettleJava开发功能。 总结来说,Kettle 9.3 Java包是Kettle 9.3提供的Java类库,用于开发者以编程的方式使用和控制Kettle数据集成功能。通过使用这个Java包,开发者可以根据自己的需求进行定制和扩展,实现更高级、更灵活的数据集成解决方案。 ### 回答3: kettle 9.3是一种用于数据集成和转换的开源软件,它提供了强大的数据抽取、转换、加载(ETL)功能。它基于Java语言开发,并打包成kettle-9.3.jar文件,这个文件是kettle在9.3版本中提供的Java包。 使用kettle 9.3的Java包,我们可以在Java应用程序中调用kettle的各种功能。例如,我们可以使用Java代码来创建kettle的Transformation对象,然后通过这个对象加载和转换数据。我们可以使用Java代码来定义数据的输入和输出,定义转换的步骤和操作。我们还可以使用Java代码来设置数据的过滤和排序规则。 除了提供基本的ETL功能,kettle 9.3的Java包还提供了许多扩展功能。例如,它支持多线程处理,可以并行处理多个转换任务,提高数据处理的效率。它还支持各种数据格式的转换,包括文本文件、关系型数据库、NoSQL数据库等。此外,kettle 9.3的Java包还提供了丰富的插件机制,可以方便地扩展和定制kettle的功能。 总的来说,kettle 9.3的Java包是一个强大且灵活的工具,可以帮助开发者实现复杂的数据转换和集成任务。无论是处理大规模数据集还是简单的数据转换,kettle都能提供可靠和高效的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值