PentahoKettle工具实现SQLServer到MySQL数据库的定时数据同步方案

来源:这里教程网 时间:2026-03-28 19:15:29 作者:
二、 图形化配置步骤 (5分钟完成)步骤1:新建转换步骤2:创建数据库连接步骤3:拖入核心步骤步骤4:连线运行三、 自动定时执行 (Windows系统)1. 创建批处理脚本2. 配置任务计划程序四、 验证与监控五、 注意事项

本文介绍了使用Kettle工具实现SQL Server到MySQL数据库的定时数据同步方案,首先需放置数据库驱动并创建目标表结构,通过图形化界面配置转换流程,包括建立数据库连接、设置表输入(读取SQLServer数据)和表输出(写入MySQL)步骤,最后通过Windows任务计划实现每日自动执行,注意事项包括驱动放置、字段映射规则和测试验证等,该方案无需编写代码,完全通过图形化操作即可实现跨数据库的定时数据同步

    放置数据库驱动

    SQL Server: 下载 mssql-jdbc-11.2.1.jre11.jar放入 {Kettle安装目录}/data-integration/lib/

    MySQL: 下载 mysql-connector-j-8.2.0.jar放入相同目录

    重启 Spoon​ 生效

    MySQL 创建目标表​ (可选):

    -- 轮齿厂电表数据结构示例 CREATE TABLE `tk_fc_01` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_time` datetime DEFAULT NULL COMMENT '采集时间', `db1_a06` decimal(13,6) DEFAULT NULL, `db1_a07` decimal(13,6) DEFAULT NULL, `db1_a09` decimal(13,6) DEFAULT NULL, `db1_a13` decimal(13,6) DEFAULT NULL, `db1_a25` decimal(13,6) DEFAULT NULL, `db1_a27` decimal(13,6) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

二、 图形化配置步骤 (5分钟完成)

步骤1:新建转换

启动 Spoon → 文件 → 新建 → 转换

保存为 sqlserver2mysql.ktr

步骤2:创建数据库连接

主对象树 → 转换 → DB 连接 → 新建

    SQL Server 连接

    连接名称:SQLServer

    连接类型:MS SQL Server (Native)

    主机名:192.168.1.2

    端口:1433

    数据库:IOT

    用户名/密码:sa/ 123456

    选项参数:useUnicode=true&characterEncoding=utf8

    MySQL 连接

    连接名称:MySQL

    连接类型:MySQL

    主机名:192.168.1.3

    端口:3306

    数据库:iot

    用户名/密码:root/ 123456

    选项参数:useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai

分别点击"测试",确保连接成功

步骤3:拖入核心步骤

    表输入​ (读取SQL Server)

    从"核心对象 → 输入"拖拽"表输入"到画布

    双击配置:

    数据库连接:选择 SQLServer

    SQL语句:

    -- 获取前一天数据 (每日凌晨同步用) SELECT a.Time AS 'gmt_time', a.[DB\DB1\A06] AS 'db1_a06', a.[DB\DB1\A07] AS 'db1_a07', a.[DB\DB1\A09] AS 'db1_a09', a.[DB\DB1\A13] AS 'db1_a13', a.[DB\DB1\A25] AS 'db1_a25', a.[DB\DB1\A27] AS 'db1_a27' FROM LK_FC_01 a WHERE a.Time >= DATEADD(DAY, -1, CAST(GETDATE() AS DATE)) -- 昨天00:00:00 AND a.Time < CAST(GETDATE() AS DATE); -- 今天00:00:00

    点击"预览"确认数据正确

    表输出​ (写入MySQL)

    从"核心对象 → 输出"拖拽"表输出"到画布

    双击配置:

    数据库连接:选择 MySQL

    目标表:tk_fc_01

    勾选"指定数据库字段"

    点击"映射"按钮,将源字段拖到目标字段

    注意:idgmt_create字段不映射 (MySQL自动生成)

步骤4:连线运行

    按住 Shift键,从"表输入"拖拽到"表输出"

    选择"主输出步骤"

    工具栏点击 ▶ "运行" → "启动"

    查看日志窗口,显示"转换完成!写入行数:XXX"

三、 自动定时执行 (Windows系统)

1. 创建批处理脚本

新建 sqlserver2mysql.bat

@echo off REM 切换到Kettle安装目录 D: cd D:\tools\data-integration REM 执行转换,日志输出到文件 pan.bat /file=C:\kettle_jobs\sqlserver2mysql.ktr /level=Basic >> C:\kettle_jobs\kettle.log 2>&1

2. 配置任务计划程序

    Win + R→ 输入 taskschd.msc

    右侧"创建基本任务"

    任务名称:"每日Kettle同步"

    触发器:每日,设置时间 (如 00:10)

    操作:"启动程序"

    程序/脚本:选择上面创建的 .bat文件

    完成创建,可右键"运行"测试

四、 验证与监控

    数据验证

    -- MySQL中检查最新同步数据 SELECT * FROM tk_fc_01 ORDER BY gmt_time DESC LIMIT 10;

    错误排查

    查看 kettle.log日志文件

    检查 Spoon 日志窗口错误信息

    验证数据库连接和权限

五、 注意事项

    首次运行前,务必确认驱动已放入 lib 目录并重启

    SQL Server 字段包含反斜杠,需要用方括号转义

    MySQL 表的主键和创建时间字段会自动填充,无需映射

    定时任务的时间需避开业务高峰期

    建议在测试环境验证后再部署到生产环境

此配置可实现每日自动同步前一天数据,无需编写代码,完全图形化操作。

到此这篇关于Pentaho Kettle工具实现SQL Server到MySQL数据库的定时数据同步方案的文章就介绍到这了,

相关推荐

热文推荐