1、数数据据抽抽取取主主 讲讲:X X X X X X目录C o n t e n t文本文件的数据抽取文本文件的数据抽取1WebWeb文件的数据抽取文件的数据抽取2关系数据库数据抽取关系数据库数据抽取3增量数据的抽取增量数据的抽取4文本文件的数据抽取文本文件抽取的基本方式是通过文本结构分析器或者人工分析,找出文本文件中所用到的分隔符,把分隔符左右两边的内容作为两个字段值进行抽取。文本文件抽取实例如下:需要被抽取的文本文件TxtExtract_test.txt,文件内容如图所示。图待抽取的文本文件文本文件的数据抽取步骤打开Kettle,在左侧导航栏中,从主对象树中选择转换,右键选择“新建”,创建一个
2、新的转换trans_txtExtract_test,双击DB连接,创建新的数据连接,本例创建一个MySQL的数据连接。12人工分析文本文件中的分隔符,TxtExtract_test.txt文件的分隔符为“|”;文本文件的数据抽取步骤2.1步骤2,MySQL的数据连接,入图所示创建MySQL数据连接实现连接成功的前提条件还需要在本机的MySQL数据库服务器上创建test数据库,否则点击“测试”,会提示“UnKnownDatabasetest”,提示test数据库未知的异常。文本文件的数据抽取步骤双击打开“文本文件输入”控件,进入文本文件输入属性设置。34在“核心对象”中,选择“输入”,双击“文本
3、文件输入”,在创建的转换trans_txtExtract_test工作区中添加文本文件输入的控件对象。在“文件”选单中点击浏览,在弹出的文件浏览器中选中需要被抽取的文本文件TxtExtract_test.tx;4.1文本文件的数据抽取步骤4.2点击增加,把文件添加到选中的文件列表中,如图所示添加需要抽取的文本文件文本文件的数据抽取步骤4.3选择“内容”选单页,不改变默认的文件类型,修改分隔符为第1)步中分析的“|”,把“头部”后的复选框取消选中,其余保持默认值,如图所示;分隔符设定文本文件的数据抽取步骤4.4选择“字段”,根据文本文件内容,键入3个新字段名称,name、id、date,再分别指
4、定字段类型,这里均指定为String型;点击页面下方的“预览记录”,则把从文本文件中的内容根据设定的字段进行抽取并预览显示,如图所示;预览文本文件抽取数据Web数据抽取数据抽取分类WEBHTML文件文件抽取抽取JSON数据数据抽取抽取XML数据抽取人工方法进行HTML的数据抽取,主要的任务就是通过人工对网页源码结果的分析,借助编程语言,使用正则表达式,匹配HTML中的标签和标签属性,把有用的需要的数据过滤出来,实现HTML文件的数据抽取工作。JSON的数据表现直截了当,通过花括号包裹,冒号:前面是数据的键,后面是数据的值,多个数据之间用逗号,分隔,若存在JsonArray,则用把数组的内容包裹
5、起来。完全免除了对HTML源码标签和属性的分析,解决了人力负担在kettle中可以使用两种方式读取和解析XML文件,分别是Getdatafromxml和XMLInputStream(StAX)Web数据抽取数据抽取实例JSON第一步第二步第三步选择JSON文件,文件名为chinacitylist.js。如果使用kettle读取JSON文件,则文件的后缀名需要改为js,让kettle把该文件作为一个JavaScript文件来读取。在kettle的核心对象树中选择“Input”,而不是“输入”。从Input中,选中JSONInput对象,双击或者拖动到转化的编辑区域,根据读取的JSON文件的内容修
6、改该对象名称为JSONInputChinaCity。双击该对象,进行属性设置。在文件选项页中先浏览需要读取的文件,再选择增加,注意JSON文件的后缀名已经改为了js,如图5-6所示Web数据抽取JSON先“浏览”找到需要抽取的JSON文件;再“增加”把选中的文件添加到“选中的文件”列表中添加需要读取的JSON文件数 据 库 数 据 清 洗第四步在“字段”选项页中需要抽取的JSON文件的字段进行指派,这也是JSON文件抽取和之前提到的所有文件类型抽取的最大不同,JSONInput缺少自动获取JSON文件的字段,需要人工手动的进行输入,而且路径必须输入准确,并且对于JSON文件中需要抽取的内容,J
7、SONInput也有一些特殊要求。设置JSON字段W e b数 据 抽 取JSON抽取字抽取字段设置段设置每个JSON文件的字段内容均不相同,所以不同的JSON文件在抽取的时候都必须重新设置字段;字段的名字是在抽取后显示的列名,可以使用中文;字段的路径必须根据JSONPath规定的符号来设置JSONPath的符号规范W e b数 据 抽 取点击预览,查看抽取效果,如图5-9所示第五步第五步从左侧“核心对象”选择“输出”,“Excel输出”,拖动到工作区,把JSONInput的主输出指向该Excel输出,在Excel输出中指定需要保存的xls路径和文件名,点击执行,就可以通过kettle抽取JS
8、ON文件中指定了路径的数据键,把这些内容抽取并保存到Excel文件中。第六步第六步chinacitylist.js文件抽取预览数据库数据抽取工具抽取ELT第一步使用Kettle创建2种数据连接,一种针对于MySQL,一种针对MSSQLServer,假定两种DBMS都安装在本地。MySQL的数据库名为world,假设抽取其中那个的country表,同理在MSSQLServer上需要创建一个同名数据库(数据库名字可以修改,为了保证数据抽取时的一致性,建议同名),并根据源数据库的country表字段创建新库的数据表。从MySQL中把数据库迁移到MSSQLServer创建2个不同DBMS的数据源连接数
9、据库数据抽取数据源连接设置设置MSSQLServer数据连接数据库数据抽取第三步第三步第四步第四步第五步第五步从“核心对象树”中选择“输出”,“表输出”,并拖动到工作区中,按住Shift和鼠标左键从字段选择拉一根连接线到表输出。双击表输出,在表输出属性页中选择“数据库连接”为之前设置的SQLServer连接world_mssql,目标表选中country,“指定数据库字段”复选框为选中状态。从“核心对象树”中选择“转化”,“字段选择”,并拖动到工作区中,按住Shift键和鼠标左键从表输入拖动连接线到字段选择,然后双击字段选择,设置需要显示在目标数据表中的字段。在“数据库字段”选项页中点击“获取
10、字段”,由于输入表结构和输出表结构基本一致(部分数据类型不同),Kettle会自动匹配输入流中的字段名和输出表中的字段。工具抽取ELT从MySQL中把数据库迁移到MSSQLServer数据库文件抽取工具抽取ELT第六步点击“运行这个转换”,查看日志是否完成,提示表输出完成处理,Spoon转换完成则表示从MySQL到MSSQLServer的数据抽取已经成功完成。通过Visual.Net查看MSSQLServer的world数据库country表,查询到所有亚洲国家的数据。从从MySQL中把数据库迁移到中把数据库迁移到MS SQLServer从MySQLworld数据库中抽取亚洲国家数据到MSSQ
11、LServer增量数据抽取运用控件对“逻辑错误类型1”进行清洗方法21)对“逻辑错误类型1”进行清洗第一步第一步第二步第二步第三步第三步第四步第四步建立“表输入”“去除重复记录”“表输出”之间的连接建立表输入,明确输入流设置去除重复记录。”用来比较的字段”列表填写course_info表中的所有字段设置“表输出”逻辑错误类型1是指字段内容重复的情况。增量数据抽取实验内容实验内容通过时间戳方式把MySQL数据库中的time_job表中新增和修改数据增量抽取到time_job_bak表中。在MySQL数据库中创建数据表time_job和备份表time_job_bak,也可以直接在选定的数据表中添加
12、update_time字段,实现时间戳增量抽取。第一步第一步time_job和time_job_bak表结构相同,包含uuid,create_time,update_time三个字段,默认情况下create_time和update_time值相同。第二步第二步在Kettle中设置数据连接,使用Ctrl+N快捷键新建一个转化,保存命名为“增量抽取源表生成”。从左侧“核心对象”导航栏中依次添加“生成随机数”、“获取系统信息”和“表输出”三个对象组件,如图5-12所示。核心对象组件的可以在左侧导航栏的“步骤”框中输入关键字进行检索,如图5-13所示。第三步第三步增量数据抽取增量抽取源表生成核心对象增
13、量抽取源表生成核心对象通过关键字搜索核心对象增量数据抽取“生成随机数”对象主要为了生成数据表的主键uuid,在“生成随机数”属性中,“字段”项中的“类型”属性值就有一个UUID类型可以选择,直接随机生成uuid字段值第四步“获取系统信息”对象获取系统日期,为time_job表中create_time和update_time字段提供数据,和“生成随机值”对象类似,字段项的“名称”属性需要手动输入,“类型”属性在下拉菜单中选取。第五步“表输出”指定目标数据库和数据表,指定数据表字段,并设置流和表字段的映射关系,设置方式和前面的示例一致第六步增量数据抽取点击左上角“执行这个转化”,如果执行结果无异常
14、表示执行成功。进入MySQLWorkBench看出time_job表完成一次转化后的结果,如下图所示。第七步第七步作为增量数据抽取的源数据表,需要对该表添加更多的数据,通过在Kettle中添加作业Job来实现持续向time_job表中添加纪录。第八步第八步增量数据抽取作业作为包含多个转化的集合,让单次执行的转化成为持续或定时调度运行的工作。通过Ctrl+Alt+N创建作业,保存命名为“生成增量测试源表”,其中包含的作业核心对象和连接关系如图5-14所示。“生成增量测试源表”作业核心组件增量数据抽取第九步从“核心对象”,“通用”,选择“START”组件,双击添加到右侧编辑工作区,双击“START
15、”进入属性设置,设置作业的调度方式。“START”属性设置增量数据抽取第十步“转化”属性设置相对简单,在“转化文件名”指定之前创建的转化文件“增量抽取源表生成.ktr”,指定后,在文本框中出现的内容是环境变量表示形式。转换属性设置增量数据抽取第十一步“写日志”的目的是为了记录每次作业的执行情况,各位读者可以自行查询Kettle中日志的创建,这里就不再赘述。执行“生成增量测试源表”作业,Kettle会根据START对象中设置的时间间隔,持续性执行转换,向time_job表中添加数据,几分钟后点击“Stopthecurrentlyrunningjob”停止该作业,然后查看数据表中的数据情况。time_job表中记录数增量数据抽取第十二第十二步步临时新建一个转化,添加“表输入”和“表输出”,用本章4.3.2中所讲述的操作把time_job作为表输入,time_job_bak作为表输出;把time_job中的数据全量抽取到time_job_bak表中。如图所示,time_job_bak表中的记录总数和time_job相同。比较time_job和time_job_bak记录数Thanks谢谢您的聆听!谢谢您的聆听!