Kettle的使用——大数据清洗技术

时间:2024-02-22 10:54:39

参考德拓视频学习:http://113.31.104.47/portal/#/course/courseDetail/b34d160db64624732ef152a1118af11a?courseId=1b7e84f4eb8552536e2267093dbd7972

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文档测试,零点几秒完事