Kettle的使用——大数据清洗技术
kettle安装:下载包直接解压打开就能用,不在阐述;
遇到的问题:
1.连接MySQL报错:
①报错:
Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
org.gjt.mm.mysql.Driver
原因:没有识别到连接数据库的驱动jar包
解决方法:
将驱动jar包复制粘贴到data-integration\lib文件下(data-integration为kettle安装目录);重启spoon。
操作完成之后反复尝试还是报相同的错,识别不到,则说明你的kettle版本与你的驱动版本不容,无法识别。(例如我的kettle7.0无法识别mysql-connector-java-8.0.19.jar)。那么只有换版本或者换连接的数据库(这里我放弃连接MySQL,转为连接sqlserver)
②报错:
Error connecting to database: (using class org.gjt.mm.mysql.Driver)
Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
原因:你导入的jar包被kettle识别,但是它与你本地MySQL版本不容
解决方法:换连接驱动的jar包(因为驱动版本是跟数据库版本一致的,间接说明你的kettle与MySQL版本不容)
连接SQL server:
连接成功:
操作:(本案例演示csv文件拆分字段转存sqlserver数据库)
(1)建立作业,连接数据库
(2)执行sql脚本(对数据库表初始化操作)
下面的sql脚本在sqlserver运行不出错,但在kettle就会报错(不知道为什么,所以现在我sql脚本没有写,不过想想确实还不如直接去数据库客户端里建表方便)
IF NOT EXISTS (select * from dbo.sysobjects where xtype='U' and Name = 'kettle_test') BEGIN CREATE TABLE kettle_test ( kind varchar(255), time varchar(255), processingDepartment varchar(255), content varchar(255) ); END
执行结果出错(如下图),后来我把sql语句删了,动手在数据库里建的表。
(3)在转换1中新建一个转换;完成输入csv文件,字段切分,输出到表的操作
(这里,观察左菜单栏就会发现它的数据清洗功能)
①需要给每个转换建立数据库连接;
②之后进行csv文件输入:
我的csv样式:
③拆分字段:
④表输出
⑤点击文件,保存
⑥返回作业,为转换1设置:
(4)保存,执行
体验:确实很快,我使用一兆多大的csv文档测试,零点几秒完事