ETL工具kettle部署及最佳实践应用

620 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程😜😜😜
擅长Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理。
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

摘要:Kettle是开源的 【TEL】 工具,JVAV编写,可以运行在多个平台,使用时有图形界面、命令脚本,还可以二次开发。用于数据抽取、转存等,非常方便

⛳️ 1. Docker部署

##  创建专用网络
docker network create --subnet=168.66.6.0/24 db-network
[root@docker ~]# docker network inspect db-network   --查看网络信息

## 容器删除
docker rm -f jemkettle
##获取镜像
docker pull techerwang/dbhub:kettle

## 容器创建
docker run -itd --name jemkettle -h jemkettle \
--net=db-network --ip 168.66.6.88 \
-p 7390:3389 \
-v /sys/fs/cgroup:/sys/fs/cgroup \
--privileged=true techerwang/dbhub:kettle \
/usr/sbin/init

## 进入容器
docker exec -it jemkettle bash
[root@jemkettle ~]# cd /usr/local/data-integration
## 调用图形化界面
[root@jemkettle data-integration]#  export DISPLAY=192.168.1.1:0.0
[root@jemkettle data-integration]# ./spoon.sh &

在这里插入图片描述

⛳️ 2. kettle应用

✨ 2.1 调用存储过程

## Oracle创建存储过程
CREATE OR REPLACE DIRECTORY D1 AS '/home/oracle/';
grant all on DIRECTORY  D1 TO PUBLIC;

CREATE OR REPLACE NONEDITIONABLE PROCEDURE IMG_INSERT(TID VARCHAR2,
FILENAME VARCHAR2,
name VARCHAR2) AS
F_LOB BFILE;
B_LOB BLOB;
BEGIN
INSERT INTO IMAGE_LOB
(T_ID, T_IMAGE,T_CLOB)
VALUES
(TID, EMPTY_BLOB(),name) RETURN T_IMAGE INTO B_LOB;
F_LOB := BFILENAME('D1', FILENAME);
DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE(B_LOB, F_LOB, DBMS_LOB.GETLENGTH(F_LOB));
DBMS_LOB.FILECLOSE(F_LOB);
COMMIT;
END;
/

docker cp 1.jpg jemora1221:/home/oracle/
docker cp 2.jpg jemora1221:/home/oracle/

BEGIN
IMG_INSERT('1','1.jpg','jem.com');
IMG_INSERT('2','2.jpg','www.jem.com');
END;
/

📢📢📢 界面调用

点击右上角【文件】->【新建】->【转换】 在这里插入图片描述

在右侧【核心对象】中搜索【表输入】,【调用DB存储过程】将其拖到新创建的转换中即可

在这里插入图片描述

按住【Shift】,鼠标左键点击【表输入】,向右拉到【调用DB存储过程】上即可连接二者然后【Ctrl+S】保存转换。

在这里插入图片描述 📢📢📢 数据库连接

在这里插入图片描述 📢📢📢 双击打开【调用DB存储过程】

1.存储过程名称:保证数据库连接正确,点击【查找】,在显示的列表中双击选中要调用的过程名称 2.返回值名称: 不填 (如果填写可能会导致调用存储过程报错) 3.存储过程调用参数配置: 查看存储过程参数信息(有多少填多少) 名称: 与存储过程中参数名称保持一致 方向:与存储过程各个参数方向保持一致 类型:与存储过程参数类型贴近,如VARCHAR2 类型选择String 参数的顺序也与存储过程保持一致

在这里插入图片描述

`双击打开【表输入】,将存储过程要传入的参数写入,语句如下,
>同时选中下方的【替换SQL语句中的变量】
SELECT '${P_TID}' as TID,'${P_FILENAME}' as FILENAME,'${P_NAME}' as NAME FROM DUAL

在这里插入图片描述 右键点击转换空白处,打开【转换设置】->【命名参数】, 配置调用存储过程要使用的输入参数(与【表输入】的SQL语句中的变量参数一致) 在这里插入图片描述 📢📢📢 结果确认 在这里插入图片描述

✨ 2.2 定时调度

运行软件,进入主界面。点击左上角的 文件 → 新建 → 作业(J)新建一个作业(job),并保存 点击面板左侧的 核心对象 ,选择 通用文件夹下的 START 和 转换 并把它拖到右侧的编辑区中, 按住 shift 画线连接“START” 和“转换”

在这里插入图片描述 双击编辑区的“START”图标,设置定时任务。记住勾选重复选项,不勾选,任务只会执行一次。 在这里插入图片描述 双击编辑区的“转换”图标,设置要定时执行的转换 在这里插入图片描述 定时调用存储过程 在这里插入图片描述 在这里插入图片描述