最近做了不少数据迁移工作,无一例外都是kettle做的,对于这些工具,我觉得,够用就好,不用做特别多的研究(当然,除非你是这款工具的忠实粉丝,我相信这样的没几个)。kettle也不例外,在我看来就是不同数据库间转移数据的工具,学一下大致的迁移的方法就行了,简单问题能解决就行。基于这个目的,这里做一个简单的迁移步骤的入门。

  对于不同数据间迁移,简单的操作一般就是表输入,字段匹配和表输出的步骤:

    

kettle迁移mongodb数据_kettle

    所以第一步就是建立表输入:文件-新建-转换,在下面选择表输入,拖到中间即可。然后点进去对表输入进行操作:当然是选择对应的数据库,这里说明一下,最好在选项那一栏里加一个属性characterEncoding 值填UTF-8或者GBK(建议统一UTF-8,如果你是数据库都是统一的UTF-8的话)。

   

kettle迁移mongodb数据_数据迁移_02

   然后获取sql查询语句,选择要迁移的数据表点击显示sql语句就行了。然后就会显示要转移的字段,你可以根据需要将这些字段做相应的处理,例如:

  

kettle迁移mongodb数据_工具_03

 首先说明一下,我这里DATEDIFF(s, '1970-01-01 00:00:00.000', RegisterTime) RegisterTime是sqlserver时间日期转换unix时间戳的函数,是官网给出的,但是可能会报错,但是按照道理不应该,具体原因不太清楚,如果怕报错可以写复杂一点:(convert(bigint, datediff(day, '1970-01-01 00:00:00' , AddTime)) * 24 * 60 * 60) 
- (datediff(second, dateadd(day, datediff(day, 0,'1970-01-01 00:00:00'), 0), '1970-01-01 00:00:00'))
+ (datediff(second, dateadd(day, datediff(day, 0, AddTime), 0), AddTime)) AddTime。这种就不会报错了。


    接下来就是字段选择:转换-字段选择拖到中间。按住shift按箭头将表输入和字段选择连接起来。点击进去,点击获取改变字段,将对应的字段名称后面的改名成都写上对应要迁移的目的库中的字段名,Encoding选择UTF-8(楼主开始被骗了,表输入表述出和字段选择都选的GBK,也可以用,不过也有个别不能用的时候,所以还是UTF-8好用)。

kettle迁移mongodb数据_数据迁移_04

   嗯,接下来就是表述出了,同样道理,从表述出里面拖出来,按住shift拉个箭头跟字段选择。接下来跟表输入差不多需要输入数据库的信息。这里就不详细说重复的步骤了,记得选项里也填上编码UTF-8。 这些做好之后,目标表选择自己要迁移到的表,勾选指定数据库字段,下面的数据库字段点击获取字段,由于咱们前边字段选择时都改名了,这里他会自动给你匹配好字段。点击确定就算完成了。

  

kettle迁移mongodb数据_数据迁移_05

  最后就是点击绿色的开始按钮,开始迁移数据吧。

  当然,在下面会有迁移进度以及日志,如果报错了,根据日志的错误提示解决了就可以:

  

kettle迁移mongodb数据_ETL_06

    OK,这样简单的数据迁移应该就没问题了。