Pentaho Kettle工具实现SQL Server到MySQL数据库的定时数据同步方案

 更新时间:2026年03月28日 13:46:11   作者:秋9  
本文介绍了使用Kettle工具实现SQL Server到MySQL数据库的定时数据同步方案,首先需放置数据库驱动并创建目标表结构,通过图形化界面配置转换流程,该方案无需编写代码,完全通过图形化操作即可实现跨数据库的定时数据同步

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

  1. 放置数据库驱动

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

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

    • 重启 Spoon​ 生效

  2. 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 连接 → 新建

  1. SQL Server 连接

    • 连接名称:SQLServer

    • 连接类型:MS SQL Server (Native)

    • 主机名:192.168.1.2

    • 端口:1433

    • 数据库:IOT

    • 用户名/密码:sa/ 123456

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

  2. MySQL 连接

    • 连接名称:MySQL

    • 连接类型:MySQL

    • 主机名:192.168.1.3

    • 端口:3306

    • 数据库:iot

    • 用户名/密码:root/ 123456

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

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

步骤3:拖入核心步骤

  1. 表输入​ (读取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
    • 点击"预览"确认数据正确

  2. 表输出​ (写入MySQL)

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

    • 双击配置:

      • 数据库连接:选择 MySQL

      • 目标表:tk_fc_01

      • 勾选"指定数据库字段"

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

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

步骤4:连线运行

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

  2. 选择"主输出步骤"

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

  4. 查看日志窗口,显示"转换完成!写入行数: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. 配置任务计划程序

  1. Win + R→ 输入 taskschd.msc

  2. 右侧"创建基本任务"

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

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

  5. 操作:"启动程序"

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

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

四、 验证与监控

  1. 数据验证

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

    • 查看 kettle.log日志文件

    • 检查 Spoon 日志窗口错误信息

    • 验证数据库连接和权限

五、 注意事项

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

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

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

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

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

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

到此这篇关于Pentaho Kettle工具实现SQL Server到MySQL数据库的定时数据同步方案的文章就介绍到这了,更多相关Kettle实现SQL Server到MySQL的同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL客户端任意文件读取漏洞方式

    MySQL客户端任意文件读取漏洞方式

    本文介绍了MySQL服务端反向读取客户端任意文件的漏洞原理,利用LOADDATAINFILE语法实现,通过伪造MySQL服务器,客户端读取的文件内容由服务端决定,漏洞复现步骤包括获取脚本、修改配置、运行服务器、客户端连接并查看日志,防范措施包括使用SSL模式和设置local_infile为0
    2025-02-02
  • Mysql数据库之索引优化

    Mysql数据库之索引优化

    MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。本文给大家介绍mysql数据库之索引优化,感兴趣的朋友一起学习吧
    2016-03-03
  • Mysql实现递归树查询的使用示例

    Mysql实现递归树查询的使用示例

    Mysql我们可以使用递归查询来构建一个递归树,本文就来介绍一下Mysql实现递归树查询的使用示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Mysql explain用法与结果深入分析

    Mysql explain用法与结果深入分析

    这篇文章主要给大家介绍了关于Mysql explain用法与结果分析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Mysql自增锁(Auto-inc Locks)用法及说明

    Mysql自增锁(Auto-inc Locks)用法及说明

    自增锁是MySQL中用于控制自增值分配的机制,保证并发插入时不产生重复ID,MySQL 5.1引入了innodb_autoinc_lock_mode参数来控制自增锁模式,包括传统模式、连续模式和交错模式
    2025-12-12
  • MySQL递归查询的几种实现方法

    MySQL递归查询的几种实现方法

    本文主要介绍了MySQL递归查询的几种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • 一文搞懂MySQL 数据库意向锁

    一文搞懂MySQL 数据库意向锁

    意向锁是InnoDB的多粒度锁机制中的一种关键机制,用于声明事务将对表中的某些行加行锁,从而在加表锁时避免扫描所有行锁,是InnoDB自动维护的表级锁,本文给大家介绍MySQL数据库意向锁,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Mysql InnoDB和MyISAM区别原理解析

    Mysql InnoDB和MyISAM区别原理解析

    这篇文章主要介绍了Mysql InnoDB和MyISAM区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • MySQL 集群迁移到 Kubernetes操作步骤

    MySQL 集群迁移到 Kubernetes操作步骤

    这篇文章主要为大家介绍了MySQL 集群迁移到 Kubernetes使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 关于MySQL自增ID的一些小问题总结

    关于MySQL自增ID的一些小问题总结

    这篇文章主要给大家总结介绍了关于MySQL自增ID的一些小问题,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11

最新评论