引言
在上一篇文章中,我们主要讲解的是:kafka的相关的那些事、命令行操作kafka、API操作kafka、kettle中的kafka的相关组件设置及实战演示。
在前面我们用了大量的文章,讲解kettle的基础组件,日常的应用也就够了。后续我通过实战案例还会扩展讲一些组件,比如:java组件、javascript组件等等,还有好多组件没有讲解!!!
在本篇文章中,介绍的是:我工作中遇到的一个实际案例,数据源是一份Excel文件,在使用kettle抽取excel到sql server数据库后,发现数据的精度有问题。下面我们进入今天的主题,展开来说一说吧。
原始数据文件
a、打开文件
b、调整单元格格式
实战演示-上篇
转换整体实现的其实并不复杂,只用到了2个组件:Excel输入、表输出。但是组件内部的设置,还是要注意看的,兄弟们。
a、整体实现
b、Excel输入设置
文件标签
工作表标签
内容标签
错误处理标签
字段标签
c、预览Excel数据
通过kettle预览数据,发现kettle读入的数据和excel显示的不一样,精度减少了。
d、修改Excel输入设置
字段标签
e、预览Excel数据
通过kettle预览数据,发现kettle读入的数据和excel显示的不一样,精度变多了。
其实排查到这,我就开始怀疑Excel的显示问题,因为上面提到了它做了单元格式控制:货币。其实,底层保存的真实值就是这个精度多的。谁叫咱会开发呢,下面我们通过java程序验证。
java环境准备
要想编写Java程序,首先我们要创建Java的maven项目。现在主流的java开发工具有:eclipse和IntelliJ IDEA,下面我们就分别演示:如何在这2种开发工具中创建maven项目。
a、eclipse创建maven项目
1、双击eclipse工具
2、创建普通maven项目
勾选Create a simple project表示创建一个纯净的Maven项目,跳过选择模板
3、创建java文件
使用鼠标 右键操作--->src/main/java目录--->New--->Class
4、编辑java程序
5、运行java程序
走到这一步,恭喜恭喜,你已经eclipse中成功的拥有了自己的第1套简单maven项目。
b、idea创建maven项目
1、双击IntelliJ IDEA工具
2、创建一个新项目
不需要勾任何东西,直接点击Nex
3、创建java文件
4、编辑java程序
5、运行java程序
通过java读取Excel原始数据
其实kettle底层就是使用java开发的,kettle中的Excel输入组件就是使用poi类的api。因为kettle的安装目录中,有一个lib子目录,它里面放的全是底层的jar包,如下图所示。
a、编辑pom.xml
b、查看引入的jar包
c、java实现程序
由于实现代码较多,我只能分批截图,兄弟们注意代码行号。
d、运行程序
从java的运行结果来看,我们发现kettle中读取的就是原始数据,没有问题。
实战演示-下篇
a、表输出设置
主选项标签
数据库字段标签
b、运行转换
验证sql server中的数据
a、数据类型说明
在sql server中创建表,最后这1列的类型设置为decimal,这个类型如果不指定小数位,默认就是取整。如果指定小数位,你保存的实际数据如果小数位不够,保存到表的同时,自动在数值后面补0
b、表中使用的类型
在sql server中创建表,最后这1列的类型设置为float,让它自己去识别数据保存。
c、打开表查看数据
我们发现灌入到sql server表中的数据,以科学技术法显示的。其实底层还是正常的数据,下面来验证这个事。
d、把表中的数值粘到excel
G列中是excel原始数据
H列是从表中粘过来的,科学记数法显示的数值
我们能看出来,第20行中G列和H列的数据是一样,验证完毕。
结束语
在本篇文章中,介绍的是:我工作中遇到的一个实际案例,数据源是一份Excel文件,在使用kettle抽取excel到sql server数据库后,发现数据的精度有问题。带领大家一步一步的排查并解决,中间还穿插了java编程。
兄弟们,其实想和作是有一段距离的,你想着想着就没有了,可是你做着做着,它就落地了。
啥都别说了,兄弟们后面跟着我干就完了,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!
标签:庖丁解牛,kettle,java,创建,30,Excel,组件,数据 From: https://blog.51cto.com/51power/6371713