kettle真是神器啊,3分钟将mysql中的数据迁移到postgres中

当公司开发机磁盘损坏,作者经历了第二次数据恢复的困扰。为节省时间,作者考虑购买新的ECS并迁移数据库。在同事的建议下,尝试使用免费的PostgreSQL云数据库,并利用Kettle进行数据同步。通过详细步骤展示了如何使用Kettle从MySQL迁移到PostgreSQL,强调了数据备份和恢复的重要性。

今天公司机房因为停电几台开发机的磁盘损坏了。运维同学告诉我,磁盘恢复比较慢,如果着急用,可以先申请一个新的虚拟机使用。没办法又要各种装装装,这是第二次了吧,心中真是策马奔腾

src=http___5b0988e595225.cdn.sohucs.com_images_20171019_786c4675aa214a58b73ba006e0e07934.jpeg&refer=http___5b0988e595225.cdn.sohucs.jpg

再暗骂一句老板抠门,也不知道土豪的大厂是不是一人一台ECS用。

src=http___ww1.sinaimg.cn_large_006r3PQBjw1fautmtyppgj30c80c8aa5.jpg&refer=http___www.sina.jpg

由于第一次故障,丢了几天代码,现在不管功能做没做完,都会先把代码push到仓库,仓库要是挂了公司的IT部门是不是都要去顶楼jump、jump了。

就剩下数据库了,虽然有备份,但是老是重装也挺浪费时间的,马上618了,看能不能去网上搜一个便宜一点的ecs装个mysql,虽然不能报销,但节省下来自己的时间摸鱼不香么。

14c9aa9b-3e18-480b-bf0b-49864e0bcc38.png

犹豫一下准备下单了。隔壁的XD冲过来说,有个免费的云数据库在搞活动,他有邀请码,可以先试试,ecs先不慌买。
试试又不花钱,不过好像是postgres的,我之前是用的mysql,得先把数据同步上去。用kettle来做数据同步,有点杀鸡用牛刀的感觉。需要科普的同学可以看b站这个视频,https://www.bilibili.com/video/BV1kE411n77a?p=3, 不想看的,我截了几张图在下面

kettle介绍

9498d584-a8f5-4f0e-92ed-cec8f226f741.png

程序目录,这里丢个网盘地址 链接:https://pan.baidu.com/s/1hPxrJUFA7yrwrwdWHwqHnA 提取码:d3lf

5c426ed6-dbb1-4798-bf69-cc859580d024.png

下载完成后直接解压,点击里面的spoon.bat启动

03e38d22-32e9-4e9a-a58f-d36075a7d62e.png

新建job,然后点击左边的“主对象树”,配置“DB连接

6a9fe4bf-f8c0-47c2-8515-c5871d1de907.png

配置源数据库,我的源数据库是Mysql的,这里填上相应的参数

cf82d1b0-a61c-451c-8355-fae9c9376853.png

配置目标数据库,这里登陆云数据库的控制台获取数据库连接IP地址,名称,将参数填写到kettle

0715ca21-a728-4f80-9cd9-c8118137a442.png

1.png

点击“工具”–“向导”–“复制多表向导”,选择源数据库和目标数据库

2.png

选择要复制的表

3.png

修改任务名

4.png

点击“Finish”完成配置

5.png

点击“Run”开始复制数据,复制完成后,可以登录云数据库控制台查看数据

6.png

kettle功能非常丰富,很多大数据公司都用他来做数据集成,这个迁移只能算是杀鸡用牛刀了。

### 使用 Kettle 工具进行 MySQL 数据迁移的方法和配置教程 #### 一、准备工作 为了成功完成数据迁移,需确保以下条件已满足: - 安装并配置好 JDK 环境[^4]。 - 下载并解压 Kettle 软件到指定路径,建议使用英文路径以避免潜在问题[^5]。 #### 二、下载 JDBC 驱动程序 由于目标是从一个 MySQL 数据库迁移到另一个 MySQL 数据库,因此需要获取适用于 MySQL 的 JDBC 驱动程序。可以从官方渠道下载 `mysql-connector-java` 文件,并将其放置于 Kettle 的 `data-integration\lib` 目录下[^3]。 推荐使用的驱动版本应与源数据库和目标数据库兼容,例如 `mysql-connector-java-8.0.31.jar` 或更高版本[^2]。 #### 三、启动 Kettle 并创建新项目 进入 Kettle 解压后的根目录,双击 `Spoon.bat` 启动图形化界面工具。随后按照以下步骤操作: ##### 创建新的转换流程 通过菜单栏依次选择 **“文件” -> “新建” -> “转换”** 来初始化一个新的数据处理任务。 ##### 添加数据库连接 在左侧导航树中找到 **“数据库连接”** 节点,右键单击后选择 **“新建数据库连接 (C)”**。弹出窗口后填写必要的连接信息,包括但不限于主机地址 (`localhost`)、端口号 (`3306`)、用户名/密码以及具体的数据库名称。完成后测试连接是否正常工作。 #### 四、设计数据流逻辑 利用拖拽方式向画布上添加组件来定义整个迁移过程的核心部分——即读取原始记录并通过适当映射写入目的位置。 ##### 设置输入步骤 从可用步骤列表里挑选适合当前场景的功能模块比如 **Table Input**, 双击打开设置对话框编写 SQL 查询语句用于提取所需字段集合。 ##### 映射输出结构 同样地,在右侧区域引入另一实例化的 **Table Output** 步骤代表最终落地点;调整其属性使之匹配先前建立的目标链接详情同时确认列对应关系无误。 #### 五、执行验证效果 保存所做的更改之后可以直接点击绿色播放按钮触发实际运行动作观察进度条变化直至结束为止。如果一切顺利则表明已经顺利完成了一次完整的跨 DB 实体间的信息搬运作业! ```python import pymysql.cursors # 建立源数据库连接 connection_source = pymysql.connect( host='source_host', user='source_user', password='source_password', database='source_database' ) try: with connection_source.cursor() as cursor: sql_select_query = "SELECT * FROM source_table" cursor.execute(sql_select_query) result_set = cursor.fetchall() finally: connection_source.close() # 建立目标数据库连接 connection_target = pymysql.connect( host='target_host', user='target_user', password='target_password', database='target_database' ) try: with connection_target.cursor() as cursor: for row in result_set: insert_statement = f"INSERT INTO target_table VALUES ({row})" cursor.execute(insert_statement) connection_target.commit() finally: connection_target.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值