MongoDB数据迁移之迁移工具Kettle
ETL:简介
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少的,Kettle就是强大的ETL工具。
Kettle:概念
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation(.ktr)和job(.kjb),transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle:四大家族(核心组件)
Chef(中文:厨师)、Kitchen(中文:厨房)、Spoon(中文:勺子)、Pan(中文:平底锅)
Chef—工作(job)设计工具 (GUI方式)。
Kitchen—工作(job)执行器 (命令行方式)。
Spoon—转换(transform)设计工具 (GUI方式)。
pan—转换(transform)执行器 (命令行方式)。
Job和Transformation的差别:Transformation专注于数据的ETL,而Job的范围比较广,可以是Transformation,也可以是Mail、SQL、Shell、FTP等,甚至可以是另外一个Job。
MongoDb简介
MongoDB是一个基于分布式文件存储 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
Kettle之实现MongoDb数据库数据迁移
1、创建转换
新建一个”Transformmations”(双击Transformmations即可),然后选择”Design”栏,将”Big Data”下的”MongoDB input”,图标拖进工作区。
设置”MongoDB Input”相关内容(双击图表即可)。
还可以提前预览数据,点击预览,选择限制预览行数。
成功预览10行数据。
字段筛选
JSON(JavaScript Object Notation, JS对象简谱)是- - 种轻量级的数据交换格式。JSON对象本质上就是一一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言中进行传递,通过工具又可以转换为其他语言中的对象。。
JSON核心概念:数组、对象、属性。
数组: []
对象: {}
属性: key:value
JSON Path
JSONPath类似于XPath在xml文档中的定位,JsonPath 表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot - notation" (点记法)和“bracket - notation" (括号记法)格式
点记法: $.store.book[]title
括号记法: $[ ‘store’ ][ 'book’ ][0][ ‘title’ ]
选择”输出”栏,将”输出”下的”JSON output”,图标拖进工作区。按住Shift键,产生连线。
即可生成data字段大json
在对数据进行操作是可以记录时间,既可借助输入下的获取系统信息设置记录生成时间字段。
将”脚本”下的”JavaScript代码”,图标拖进工作区。通过JavaScript代码实现字段的插入生成。
将”转换”下的”字段选择”,图标拖进工作区。可实现选择和修改字段移除字段功能。
将”Big Data”下的”MongoDB output”,图标拖进工作区。依旧将数据输出保存到MongoDB数据库中。
点击运行即可,运行结束后,我们可以在下方看到运行结果,其中有日志,数据浏览等。
即完成一次转换