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!!!

 

posted @ 2025-05-07 22:27  慕容尘轩  阅读(351)  评论(1)    收藏  举报