kettle插件-ClickHouse插件
场景:今天vip小伙伴群里发问题:自己的kettle 7.1版本无法支持数据同步到ClickHouse数据库,群里两位老师也是及时给予指导,换高点的版本或者使用我们自行研发的插件。
总之问题在vip群里会被秒杀,哈哈哈。废话少说,开始盘它。

1、拉取clickhouse镜像
docker pull yandex/clickhouse-server
2、安装clickhouse数据库
docker run -d \ --name clickhouse-server \ --ulimit nofile=262144:262144 \ -p 8123:8123 \ -p 9000:9000 \ -p 9009:9009 \ -v /Users/xxx/Documents/docker/clickhouse_data:/var/lib/clickhouse \ yandex/clickhouse-server
3、DBeaver连接数据库
输入主机ip地址和端口号,端口号默认为8123,数据库默认为default,用户名默认为default,密码无需填写,如下图所示:

4、连接clickhouse之后,创建表t1,脚本如下:
CREATE TABLE t1
(
id UInt64,
name String
)
ENGINE = MergeTree()
ORDER BY id;
4、将数据库插件kettle-database-plugin放到kettle的plugins目录下面,重启spoon。
5、配置clickhouse数据库连接,如下图所示:

6、设计转换,使用生成记录和表输出步骤,如下图所示:


7、保存&运行,可以正常work,但是有一点小问题,如下图所示:
查询数据之后发现,字符串使用单引号引起来了,继续寻找。

8、开启debug模式调试,参数传递正常依然没有发现问题,如下图所示:

9、换成执行SQL脚本步骤继续寻找问题,好神奇这种方式却正常,如下图所示:


10、对比了两个sql语句的差异,发现执行的insert语句有差别:
表输出: INSERT INTO "default".t1 (id, name) VALUES ( ?, ?)
执行SQL脚本::insert into t1(id,name)values(2,'测试1');
去掉表输出中的目标模式设置default 问题解决,但是依然不清楚为啥设置为default就会有问题。知道的小伙伴欢迎评论区告诉我。
Done!!!
浙公网安备 33010602011771号