第四章——数据抽取

一、抽取csv数据到数据库extract中的数据表csv中

1.查看源数据

 2.新建数据库extract并建表csv和json

SQL语句如下:create database extract;

create table csv(CustomerId int,Gender char(10),Age int,AnnualIncome int,SpendingScore int);

create table json(id int,field int,value varchar(20));

3.打开kettle并新建一个转换,添加以下步骤并用跳连接

 4.双击csv文件输入进行配置,点击浏览将源数据导进来,然后点击获取字段,最后预览数据

 5.双击表输出后点新建进行数据库连接并测试

 6.然后点目标表右边的浏览选择表csv,勾选指定数据库字段

 7.点击数据库字段之后点击右边的获取字段

 8.点击输入字段映射

 9.保存并运行,成功后截图如下 

10.查看导入到数据库表csv中的数据

 二、抽取json数据到数据库extract中的数据表json中

1.上面已经建过数据库extract和数据表json了,故略过此步骤直接预览源数据

 2.新建一个转换并按照下述建立步骤后用跳连接

 3.双击JSON input进行配置

先点浏览将源数据导进来,之后点击增加,效果图如下

 之后点击字段按照下图进行配置

 最后点击预览看数据是否抽取进来

 4.双击JSON input 2进行配置

勾选源定义在一个字段里并在从字段获取源后面写上data

 然后点击字段进行如下配置

5.双击表输出进行配置

先点击新建进行数据库连接并测试

 接着点击目标表右边的浏览选择表json并勾选掉指定数据库字段 

 最后点击数据库字段进行获取字段和输入字段映射

 6.保存并运行,成功后截图如下

7.查看导入到数据库表json中的数据 

三、抽取TSV数据到数据库txt中的数据表tsv中

1.查看源数据

2.打开kettle创建转换

3.步骤配置

双击“文本文件输入”控件,进入“文本文件输入”界面,单击【浏览】按钮,选择要抽取的文件tsv_extract.tsv,单击【增加】按钮,将要抽取的TSV文件添加到转换“tsv_extract”中。单击“内容”选项卡,清除分隔符处默认分隔符“;”并单击【Insert TAB】按钮,在分隔符处插入一个制表符;取消勾选“头部”复选框。单击【预览记录】按钮,查看文件tsv_extract.tsv的数据是否成功抽取到文本文件输入流中。

 

双击“表输出”控件,进入“表输出”控件的配置界面,单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。单击目标表右侧的【浏览】按钮,获取目标表,即数据表tsv。勾选“指定数据库字段”复选框。单击“数据库字段”选项卡,再单击【输入字段映射】按钮,弹出“映射匹配”对话框,将“源字段”选项框的字段和“目标字段”选项框对应的字段进行映射匹配。

 

 

4.运行转换查看结果

 

四、通过Kettle工具抽取HTML网页的数据,并保存至数据库txt中的数据表html中。

1.打开kettle创建转换

 2.配置步骤

双击“自定义常量数据”控件,进入“自定义常量数据”界面。单击“元数据”选项卡,定义一个字段常量filename并指定数据类型String;单击“数据”选项卡,添加html形式数据所在的URL和User-Agent即为了以浏览器形式访问,否则会出现403,即https://movie.douban.com/chart。查看User-Agent是只需要在浏览器地址栏输入about:version即可查看。

 双击“HTTP client”控件,进入“HTTP web service”界面,勾选“从字段中获取URL?”的复选框;在“URL字段名”处的下拉框中选择URL字段名,即filename;在“结果字段名”处指定结果字段名称,这里选择默认的结果字段result。“HTTP client”控件配置的效果如图所示。点击Fields填写字段名

 双击“Java”控件,进入“Java代码”界面。双击“Code Snippits”→ “Common use”→ “Main”,添加Java脚本代码的主方法,即程序入口。在“Java代码”控件中的代码框编写抽取HTML网页数据的Java脚本代码。 单击“Java代码”控件中的“字段”选项卡,用于添加新生成的字段;单击“参数”选项卡,用于传入参数。“字段”选项卡界面和“参数”选项卡界面具体如图所示。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

private String result;
private String contents;
private Connection connection = null;


public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException,SQLException{
  if (first) {    
	result=getParameter("result");
	first = false;
  }

  Object[] r = getRow();

  if (r == null) {
    setOutputDone();
    return false;
  }
  Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
  String foobar = get(Fields.In, result).getString(r); 
  String pattern ="<a[^>]*href(\\\"([^\\\"]*)\\\"|\\'([^\\']*)\\'|([^\\\\s>]*))[^>]*>(.*?)</a>";
  Pattern patterns = Pattern.compile(pattern);
  Matcher m = patterns.matcher(foobar);
  while(m.find()){
		get(Fields.Out, "contents").setValue(outputRow, m.group().replaceAll("<[^>]*>",""));
		String url = "jdbc:mysql://localhost:3306/txt";
		String userName = "root";
		String userPwd = "12345678";
			try{
				// 加载驱动程序
				Class.forName("com.mysql.jdbc.Driver");
				// 获取连接对象
				connection= (Connection) DriverManager.getConnection(url, userName, userPwd);
				} catch (Exception e) {
					e.printStackTrace();
				}
				//要执行的SQL语句
				String sql="insert into html (contents) values (?);";
				PreparedStatement stat = (PreparedStatement) connection.prepareStatement(sql);
				contents=m.group().replaceAll("<[^>]*>","");
				stat.setString(1, contents);
				//3.ResultSet类,用来存放获取的结果集!!	
				stat.executeUpdate();

  			putRow(data.outputRowMeta, outputRow);
			}
  return true;

}

3.运行转换查看结果

五、通过Kettle工具抽取XML数据,并保存至数据库txt中的数据表xml中。

1.查看源数据

2.打开kettle创建转换

 3.配置步骤

双击“Get data from XML”控件,进入“XML文件输入”界面,单击【浏览】按钮,选择要抽取的XML文件xml_extract.xml,单击“内容”选项卡,单击【获取XML文档的所有路径】选择循环读取路径,即/AllRows/Rows/Row。单击“字段”选项卡,添加要抽取的字段。点击预览查看数据是否抽取进来

双击“表输出”控件,进入“表输出”配置界面,单击【新建】按钮,配置数据库连接,单击目标表右侧的【浏览】按钮,选择输出的目标表,即xml数据表;勾选“指定数据库字段”的复选框,单击“数据库字段”选项卡,再单击【输入字段映射】按钮,弹出“映射匹配”对话框,将“源字段”选项框的字段和“目标字段”选项框对应的字段进行映射匹配。

 4.运行转换查看结果

 六、总结

        在数据清洗中,数据抽取主要是从一个或多个数据源中获取所需的数据。数据抽取的数据源可以是文本数据、Web数据以及数据库数据。本次就是抽取了TSV文件、CSV文件、HTML文件、XML文件和JSON文件并将其放入到数据库当中。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值