首页 > 数据库 >使用Kettle定时从数据库A刷新数据到数据库B

使用Kettle定时从数据库A刷新数据到数据库B

时间:2023-06-29 15:55:05浏览次数:44  
标签:kettle admin 数据库 Kettle ktr HOME home 定时

一、需求背景

由于项目场景原因,需要将A库(MySQL)中的表a、表b、表c中的数据定时T+1 增量的同步到B库(MySQL)。这里说明一下,不是数据库的主从备份,就是普通的数据同步。经过技术调研,发现Kettle挺合适的,原因如下:

  1. Kettle (数据抽取、清洗、转换、装载)是由java 编写,可以在 Window、Linux、Unix 上运行。支持多数据源, 多种中间件的专业ETL 工具;
  2. 可视化界面支持图形化GUI设计界面,组件多样性,支持组件拖拉拽,不用写额外的代码;
  3. Kettle的流程图本质上都是配置文件,如.ktr/.kjb文件。这种设计的好处就是,当我们把转换流程图画完之后,可以直接复制到另外一个环境中运行,如:在Windows电脑上画好流程图,复制到Liunx系统上运行
  4. 免费、组件多、支持开源,一般处理T+1的数据同步是没有问题的。如果并发高、实时性高、数据量大就建议使用Flink了。

二、使用方式

1. 安装包下载

官网地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/

2. 启动方式

Windows点击Spoon.bat启动

出现以下图片表示正在启动,如果一直没有反应,使用管理员身份运行

主界面如下:

三、连接MySQL数据库

1. 准备MySQL连接驱动jar包

由于Kettle自身是不带任何数据库驱动包的,所以这里我们需要先自己准备好驱动包,版本最好选择5.1.49。下载好jar包后,拷贝到lib目录下(Windows和Linux同理)。如果已经启动了Kettle,则需要关掉重新启动,否则驱动包不会被加载。

2. 创建数据源

依次点击:转换——>主对象树——>DB连接——>点击新建——>测试

同上操作,创建好两个数据源:源数据库、目标库;目标就是将源数据库中的表数据同步到目标库中去

3. 配置转换流程

① 加入输入节点:转换——>输入——>表输入

② 双击输入节点打开配置页,输入一下信息

这里因为我是定时T+1 增量同步数据,所以我加了个同步条件WHERE gmt_create >= CURDATE()表示该数据创建时间大于当天才会进行查询。

点击预览,正好有一条数据

③加入转换节点:转换——>插入/更新——>按住shift建立连接

④ 双击插入/更新节点,打开配置页

⑤ 点击运行测试

四、复制ktr文件到Liunx上定时运行

在Linux上,ktr文件使用Kettle的pan.sh脚本运行,命令大致如下:sh /home/admin/kettle/data-integration/pan.sh -file=/home/admin/kettle/ktr/table_transfer.ktr -norep。同时为了实现定时执行这个脚本,我打算用Linux自带的corntab功能设置定时。

首先我编写了一个shell脚本,命名为cornSql.sh,用于保存ktr的执行命令,内容如下:

#!/bin/bash 
export KETTLE_HOME=/home/admin/kettle/data-integration
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin:${KETTLE_HOME}
export JRE_HOME=${JAVA_HOME}/jre

TIME=$(date "+%Y%m%d")
sh /home/admin/kettle/data-integration/pan.sh -file=/home/admin/kettle/ktr/table_transfer.ktr -norep >>/home/admin/kettle/log/transfer-"$TIME".log

其次,将ktr脚本拷贝到指定目录下,也就是/home/admin/kettle/ktr目录下,输入 crontab -e,再输入0 1 * * * /home/admin/kettle/cornSql.sh,这句话的意思是每天凌晨1点定时执行cornSql.sh脚本
为了检查定时配置是否生效,这里可以使用 crontab -l -u root命令,如果刚才的定时指令有打印出来,则证明配置生效。

最后,第二天检查一下执行日志文件有没有生成,在/home/admin/kettle/log目录下,这里我把每天执行的日期打印出来了,如下图:

标签:kettle,admin,数据库,Kettle,ktr,HOME,home,定时
From: https://www.cnblogs.com/wlovet/p/17514420.html

相关文章

  • 玖章算术与百度智能云达成合作,「NineData SQL 开发」成为百度智能云主推的数据库工具
    2023年6月19日,玖章算术(浙江)科技有限公司旗下的多云数据管理平台NineData正式入驻百度智能云市场,双方的深度技术融合将为客户提供智能高效、安全可靠的数据库开发服务。通过适配百度智能云数据库,NineData为开发者、企业提供了支持关系型数据库、NoSQL数据库的一站式数据库......
  • VCSA内置PG数据库信息
    vcsa就是一个suselinux,会内置一个PostgreSQL数据库,那么如何修改数据库用户密码呢?首先通过22端口远程连入suselinuxToescapetolocalshell,pressCtrl+Alt+].VMwarevCenterServer7.0.3.01500Type:vCenterServerwithanembeddedPlatformServicesControllerWARNING!......
  • VCSA内置数据库密码
    vcsa就是一个suselinux,会内置一个PostgreSQL数据库,那么如何修改数据库用户密码呢?首先通过22端口远程连入suselinuxToescapetolocalshell,pressCtrl+Alt+].VMwarevCenterServer7.0.3.01500Type:vCenterServerwithanembeddedPlatformServicesControllerWARNING!T......
  • Oracle数据库用户密码过期的解决方法
    问题现象:今天在更改数据库数据的时候,程序报错了,如下:ORA-28001:thepasswordhasexpired问题分析:很显然,报错原因就是:密码已过期!所以现在需要做的事情只有两件:1.修改密码的过期时间2.修改/重置密码这里分析一下为什么要这样做:1.修改密码的过期时间:这是因为OracleDatab......
  • wifi智能计量插座-10A 定时上传插座状态,电压,电流有功功率,视在功率,功率因数电量,温度 至
    wifi智能计量插座-10A定时上传插座状态,电压,电流有功功率,视在功率,功率因数电量,温度至MQTT服务器wifi智能计量插座-10A定时上传wifi智能计量插座-10A定时上传插座状态,电压,电流有功功率,视在功率,功率因数电量,温度至MQTT服务器插座状态,电压,电流有功功率,视在功率,功率因数电量,温度......
  • sqflite数据库处理中的conflictAlgorithm属性
    sqflite中的conflictAlgorithmconflictAlgorithm是在数据插入或更新时发生冲突(例如违反唯一性约束)时的解决策略。在Dart的sqflite库中,有以下四种冲突解决策略:ConflictAlgorithm.rollback:回滚事务,放弃所有更改。ConflictAlgorithm.abort:放弃当前操作,但不回滚事务。ConflictAlgo......
  • python实现定时任务
    第一种方式:立即执行,间隔时间 第二种方式:具体到某个时间 参考:https://blog.csdn.net/weixin_44799217/article/details/127352531https://blog.csdn.net/u013302168/article/details/123420582 ......
  • mysql连接另一台电脑机器数据库
    方法一:1.开放被访问机器端口:在windows防火墙的高级设置中添加新的入站规则,选择端口选项,然后选择TCP协议,端口输入3306,其他选项按照默认即可。2.假设192.168.1.3为服务器3.首先在ip为192.168.1.103的机子上能够ping通4.把两台电脑的IP设置在同一个网段,如:192.168.1.2,192.168.1.3......
  • Linux - 操作mysql数据库
    运行环境Ubuntu20.04虚拟机Mysql8.0APIlibmysqlclient-devgcc9.4.0一、准备工作1、在Ubuntu上准备mysql开发环境更新软件源sudoaptupdate安装libmysqlclient-dev,这个lib库是Linux下C/C++连接mysql的客户端sudoaptinstalllibmysqlclient-dev2、创建测试数据库......
  • 使用 SQLAlchemy 库来实现对 MySQL 数据库的增删改查
    在 Flask 中使用SQLAlchemy库来实现对MySQL数据库的增删改查fromflaskimportFlask,request,jsonifyfromflask_sqlalchemyimportSQLAlchemyapp=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='mysql://username:password@localhost/dbname'ap......