数据库迁移不是一件简单的事情,特别是需要从Oracle迁移到MySQL或者sqlserver迁移到MySQL等等,而数据处理中还会遇到很多问题,譬如表结构不一样,字段需要特殊处理等,而Kettle使用起来则非常方便,不需要连接太多的SQL知识,本文就介绍一下我在工作中遇到的使用场景,我使用的kettle版本是9.0+
相关文章
- Kettle数据库迁移实战(二)–批量导入
- Kettle数据库迁移实战(三)–表输入使用上一个步骤的变量作为参数
- Kettle数据库迁移实战(四)–使用SQL脚本
- Kettle实战(五)–使用java代码脚本
- Kettle应用场景(多表级联)
- sqlserver驱动jar下载
- 官方文档一
- 官方文档二
- 官方文档三
- 先介绍一篇其它优秀博文—kettle数据迁移从oracle到mysql,作者对于软件的下载,数据库连接和基本使用,介绍的都比价详细。另外说明一点,获取字段映射关系,首先需要建立两个数据库的关系,也就是先要把步骤连起来
- 我在工作中的使用
- 新表当中有个别字段是常量,而就数据库没有这个字段
- 首先新建转换,在主对象树建立数据库连接
- 在核心对象->输入选择‘表输入’,输出选择’插入/更新’,转换选择增加常量。其中输入根据需要写Sql
- 依次连接3个步骤,并配置3个步骤
- 检验转换有没有错误,没有错误则执行转换
- 校验没有错误但是在执行转换报错也是很正常的,这时候大都是因为sql有错误:比如非空字段没有插入值,字段长度不够等,而日志台对这些错误信息显示的页比较清晰,遇到错误不要害怕,静下心来分析错误,你会发现很简单
- 新表当中某个字段需要是几个字段(或者常量)的拼接后的结果,下面只给出关键步骤
- 当新表中有字段需要随机值-可选择输入步骤->生成随机数,可选择生成随机数的类型,竖直,字符串,UUID等
案例2:根据正则截取数据库中的字段值的一部分内容,并复制给新的字段
- 我的业务需求是:从旧数据库的的内容里(是富文本内容)提取第一张图片的路径然后保存到新数据的对应字段值
- 因为要使用java的类,而kettle并没有提供这些类的使用,所以需要自定义java类(在自己的编辑器编写java类),然后导出jar包
- 把jar包放在kettle的lib文件夹内,然后重启kettle(有可能不需要重启)
- 利用核心对象->脚本->java代码调用自定义的java类
- 把返回值存入新的变量中