Kettle连接不上数据库及中文乱码问题解决

Kettle 连接数据库问题分析及解决

一、问题一:测试连接数据库出问题

1 将如下驱动包导入data-integration目录下的Lib目录

mysql-connector-java-5.1.40.jar
mysql-connector-java-8.0.17.jar

mysql-connector-java-5.1.40.jar提取码dny8
mysql-connector-java-8.0.17.jar提取码qqxh

2 重新测试连接数据库

如果连接成功,则结束,如果连接成功但是再进行数据转换时出错,或者其他问题往下看。(基本上驱动有了都会成功)

二、 问题二:测试连接成功,但是在进行转换运行时出错

1 这种情况基本上都是字符集问题

可能在你测试成功后,在进行在Kettle上执行SQL语句建立表时出错,是字符集错误没跑了。

2 修改字符集

将mysql下的字符集编码格式改为utf8mb4

utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,程序中将报SQL异常。

3 修改过程如下

修改mysql字符集编码为utf8mb4(Linux系统)

1 查看自己的数据库版本

SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’;

如下:

在这里插入图片描述

2 进入自己的mysql安装路径修改my.cnf配置文件

我的安装路径是:/etc/mysql:在配置文件中添加如下内容:

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=‘SET NAMES utf8mb4’

3 重新启动数据库

再次查看数据库编码格式:

在这里插入图片描述

可以看到,已经成功修改为utf8mb4格式

4 将数据库和已经建好的表也转换成utf8mb4

ALTER DATABASE (输入你自己的数据库名) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE (输入你自己的表名) CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

5 将kettle中数据库连接中的高级添加下面一句话

set names utf8;

6 将kettle中数据库连接中的选项下的命令参数添加下面一句话

characterEncoding utf8;

三、中文乱码问题

对于将EXCEL表中中文导入数据库时,中文出现乱码这种问题。我们知道肯定是字符集问题,但是我在最初进行更改字符集时,总是出现错误还是乱码。不过,最终,在一步步分析后,我终于找到了问题所在。主要问题就是我在之前的字符集修改时,总是忽略了对mysql数据库字符集的修改,而导致出现了各种各样的问题。

下面,我在这里总结了如果出现中文乱码错误(其他错误也可以尝试修改),则修改字符集的地方有以下几处:

1 kettle中数据库连接上的高级里设置:set names utf8;
2 kettle中数据库连接上的选项里设置命令参数:characterEncoding utf8
3 修改mysql字符集为utf8mb4(配置文件中修改,一定要找准配置文件)

具体做法见上面。
在这里插入图片描述

在这里插入图片描述

通过上面几步,基本上可以解决Kettle连接数据库和中文乱码问题。

如果最终还不成功,可以私信我帮你解决。

  • 29
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bug.Remove()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值