Kettle 中文名称叫水壶,该项目的主程序员希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle是用来做数据迁移的,也就是将一个数据库中的数据全部导入另一个数据库,说起来简单,可是要是这两个数据库的表中的字段完全不同那怎么办呢,总不能简单的复制粘贴吧,所以就需要将表的字段名称甚至字段内容都进行一次转换,才可以解决问题。在这里关于Kettle的安装就不做说明了,主要是说说我的用法,也算是一个新手使用教程吧。

打开软件后,首先,我们先新建一个转换,ctrl+s进行保存,输入一个文件名,同时,第一次保存该文件时,文件名也会直接成为该转换的名称,然后选择一个自己能找到的地址就行了。

这时我们看左边,有两个页签可以切换,分别是主对象树和核心对象,主对象树就是当前的转换。核心对象相当于一个工具栏,里面有各种各样的工具。我主要用到的有:输入-表输入,转换-值映射,转换-字段选择,转换-增加常量,脚本-java代码,输出-表输出。

我们把所有上述的一个个小模块都给拖到主面板上,如图:

然后从第一个开始,首先单击第一个模块表输入,如图:

选择第四个带箭头的图标,然后会发现有个灰色的箭头随着你的鼠标移动,这时将鼠标移动到第二个模块值映射上,会发现箭头变蓝这时单击第二个模块值映射,会发现表输入和值映射之间多了一个蓝色箭头,有事需要选择主输出步骤。通过这种方式将所有模块串联。如图:

上图就代表了一个完整的表的数据交换,这时我们需要在左侧栏,点击主对象树,然后右击DB连接,选择新建,然后填入你的数据库连接信息,并测试,成功连接后点确认即可新建连接,如图:

这时,我们的准备工作基本已经就绪了,可以进行基本的数据迁移了,首先操作的是表输入,顾名思义,表输入代表的就是数据的来源,双击表输入,选择数据库连接,然后写上你要取数据的sql,然后点击预览,可以查看你查找到的数据,这时必须查看数据格式,因为部分字段,如:disabled,数据库中存的是0或1,但通过Kettle查找出来的数据中,disabled为Y或N。

一般来说,能够预览到数据说明你的sql是对的,也就可以进行下一步了。然后我们来操作下一步:值映射,值映射就是将某些值改成另一种值,比如将Y和N映射为1和0。双击值映射,首先选择使用的字段名,然后填上原值和目标值,点击确定即可。如图:

之后就是最重要的一步了:字段选择,由于数据迁移时,必定很多字段存在差异,那么如何将两张表中的字段一一对应呢,这是就可以通过字段选择将字段的名称修改成我们想要的。首先,双击字段选择,切换到第三个页签:元数据。然后点击右边的获取改变的字段,然后Kettle会将你sql中查询出来的字段一一列出,在改名成那列填上你现表中的字段,类型填上对应的类型,需要注意的是Integer代表Long,Number代表Double,同时,类型也可以不填,但不建议。填完后选择确定。如图:

这时,你会发现可能你现在的表中有很多字段是原表中没有的,但这些字段又是不可或缺,不能为空的,那么就需要用到增加常量这个模块了,可以填上名称,类型,长度,值(默认值),然后点击确定。如图:

在完成上部分操作后,基本字段是都可以对上了,但是,有些字段需要需要一些逻辑的处理,不能直接将取出来的值直接存入现表中,比如我自己的项目,我们的需求是将原来网站上的数据放到我们正在运维的新网站上,所以迁移过来的时候,现表已经存在数据,id就存在重复的现象,我们就把迁移过来的数据id直接改为负值,同时关联的id也要改为负值,这样就可以解决id重复,数据无法迁移的问题,同时关联关系也不会丢掉。这时候就需要用到java代码这个模块了,这里有个问题,Kettle自带的java代码模块不会自动导入jar包,所以建议先在MyEclipse中写好代码,然后复制过来,同时需要把导入的jar包复制过来。当然,导入的jar包必须在Kettle的文件夹下的lib文件夹中存在。在写代码的时候,可以在左侧栏中的input fields中双击getValue,这就是取值;在左侧栏中的output fields中双击setValue,这就是赋值。在写代码时,可以点击右下方的测试类来进行测试java代码。所以,java代码模块可以用来进行逻辑的处理,如图:

经过以上的步骤,我们的数据应该已经全部修改成新表格式的数据了,那么就可以进行最后一步表输出了,双击表输出,首先选择数据库连接,然后在目标表中写上要导出的那张表,注意不要勾选裁剪表,它会将表中原有数据删掉,然后点击数据库字段页签,如果需要字段有冗余,需要选择指定数据库字段,然后点击右方获取字段按钮,这时需要小心排查,需要将现表中没有的字段给删掉,右击,删除选中行就可以了。编辑完后确定,如图:

然后在主界面点击上方的运行按钮运行这个转换,运行成功如图:

若是没有错误出现,则代表转换运行成功。这时就可以去查看数据库中的数据有没有问题了,有问题可以再进行迭代调试。若是有错误出现,可以查看下方的执行结果中的日志页签,这里有比较详细的错误,可以协助你的调试。

以上操作基本可以满足数据迁移的全部需求了,多练练就行,接下来讲个拓展,有时候我们在执行完所有的转换操作后,还是无法满足需求,比如需要在数据转换之后进行一个sql来格式化某个字段。

第一种方法就是在执行完转换后,直接使用Navicat执行一个sql,可以满足需求,但需要额外的操作,其实Kettle也可以满足我们的这个需求,Kettle在核心对象的脚本中有一个执行sql脚本。但是,如果你直接拖到表输出的后一步,你的想法是执行完表输出后执行sql,但Kettle的机制是只要有sql是优先执行的,所以其实是在你插如数据之前执行了这段sql的。

那么,应该怎么做呢,那就要涉及到作业的概念了。作业是什么呢,简单理解就是很多个转换在一起,从上往下顺序执行,这不就可以解决我们的问题了么,首先我们先新建两个转换,一个是正常的数据迁移,第二个就放一个执行sql脚本的模块就可以了,写上你再数据迁移之后需要运行的sql。如图:

然后点击左上角文件,新建一个作业,我们只需要在核心对象中找到通用-START和通用-转换,然后拖一个START和两个转换到主面板,然后双击转换,第一个转换选择正常的数据迁移,第二个转换选择就一个执行sql脚本的转换,如图:

然后我们就可以运行这个作业了,运行成功后,即可实现先进行数据迁移,在执行sql的操作,如图:

以上操作就是我使用Kettle进行老数据迁移的心得,基本满足我的使用需求,希望也可以帮到大家。

Kettle 数据迁移相关推荐

  1. kettle数据迁移

    kettle 是纯 java 开发,开源的 ETL工具,用于数据库间的数据迁移 . 1.文档 https://pentaho-community.atlassian.net/wiki/spaces/E ...

  2. DATAX 数据迁移 oracle-oracle

    DATAX 数据迁移 oracle-oracle 数据库 项目背景,公司需要把老系统的数据迁移到新系统上,老系统使用了很多年了,历史数据比较多,又不能丢掉.新系统和老系统数据库结构和系统架构不一致,因 ...

  3. 导入数据中文乱码_基于Navicat和Kettle的数据迁移完全解读(多图)

    需求描述 对于数据分析人员来说,工作的基础是数据,没有数据分析就无从谈起,即巧妇难为无米之炊. #数据库# #数据迁移# #Oracle# 然而,数据分析往往在实验环境或者准生产环境中开展,而数据分布 ...

  4. Kettle环境搭建及使用(数据迁移)

    Kettle的功能非常强大,是一款免费开源的ETL工具.这里主要讲将Excel文件数据导入到数据库中. Kettle下载 下载地址:https://community.hitachivantara.c ...

  5. 使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码

    查看Oracle数据源编码: 执行: SELECT Userenv('language') FROM dual; 结果:AMERICAN_AMERICA.US7ASCII mysql  目标库 为ut ...

  6. kettle多表数据迁移

    多表数据迁移 将不同的数据库中的多个表中的数据进行迁移,将表名作为变量,在作业中执行. 本文使用的数据库均是mysql. 1.创建2个数据库 一个是源数据库,一个是目标库,源数据库中有表和数据:目标有 ...

  7. MongoDB数据迁移之迁移工具Kettle

    MongoDB数据迁移之迁移工具Kettle ETL:简介   ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数 ...

  8. kettle工具下载、安装、数据迁移、定时任务详解

    kettle工具下载.安装.数据迁移.定时任务详解 篇幅有点长,将这五个内容放在了一篇文章里,其中最主要的是数据迁移和定时任务 目录 目录 一.简单介绍 二.下载 三.安装 四.数据迁移:包括单表整体 ...

  9. kettle 十分钟百万数据迁移

    现在需要对以往数据进行整合并进行数据迁移 确定目标表 数据源及数据量如下 待迁移数据 目标表与 Z0_工单_整理备份 的字段是一致的.为了方便后续操作(增删改查.数据迁移.增量备份)需要新增几个字段 ...

  10. oracle抽取mysql_oracle到mysql,oracle到oraclel的多表批量数据迁移,定期任务抽取数据-kettle的使用...

    一.背景 上一篇文章(单表数据迁移)用kettle实现了一张表的数据迁移.但实际情况中,数据库会有几百,几千张表,而kettle的表输入和表输出只能选择一张表,我们不可能一个个地填写表名.这时候,我们 ...

最新文章

  1. Oracle 原理: 闪回 flashback
  2. Mysql允许外网接入
  3. 超链接标签/<a>标签
  4. 030 Substring with Concatenation of All Words 与所有单词相关联的字串
  5. 数据结构之线索化二叉树
  6. 实战 团队项目如何把控log日志输出
  7. Kodak Preps 8 for Mac(专业拼版软件)
  8. 计算机快速换界面,老板来了?这些好用的Windows快捷键让你一秒切换操作界面!-页面设置快捷键...
  9. React脚手架搭建及创建React项目
  10. html视频文件哪种格式好,常见的视频格式有哪些?
  11. sl400升级win10_联想SL400全安装WIN7(官方最完美教程).doc
  12. jquery option selected 无效
  13. 52道常见Python面试题,你都能答对吗?
  14. 大会员 python
  15. 香港 - 寻找轻鬆攻略游(蒲台岛)
  16. 使用idm下载新闻视频(bbc)及百度云盘内容
  17. RTFM — man
  18. verilog基础---always
  19. html播放rtsp低延时(局域网测试500ms左右)
  20. Long Short-Term Memory(长短期记忆网络)

热门文章

  1. 用计算机上初中英语课的方法,如何上好初中英语读写课
  2. 计算机网络中什么是令牌,一个动画看懂网络原理之令牌环网的工作原理
  3. 诚龙网刻报错_诚龙PXE网刻工具11.5
  4. 程序员桌面都这么秀?网友:用砖头当杯垫这样合适吗?留着吓谁
  5. web 打印时 表格多页 导致缺少线段 看上去页面不完整的处理方案
  6. Java调用WebService接口的四种方式
  7. windows用户密码破解
  8. 线性(欧拉)筛法筛素数表
  9. 软件质量管理体系 type:pdf_普宁iso14001环境管理体系AAA信用等级认证
  10. 项目(1)——文件压缩