kettle基本使用:把数据从一个数据库的一张表抽取到另一个数据库的另一张表

0、准备两个数据库实例(最好位于两台不同的数据库服务器),每个实例中创建好源表和目标表

源表

CREATE TABLE `test_0`.`stu_info` (
  `stuNum` VARCHAR(128) NOT NULL COMMENT '学号',
  `stuName` VARCHAR(45) NOT NULL COMMENT ' 姓名',
  `stuAge` VARCHAR(45) NOT NULL COMMENT '年龄',
  `regTime` VARCHAR(45) NOT NULL COMMENT '注册时间',
  PRIMARY KEY (`stuNum`));

分析表

CREATE TABLE `stu_info_analysis` (
  `stu_num` varchar(128) NOT NULL,
  `stu_name` varchar(45) NOT NULL,
  `stu_age` int(4) NOT NULL,
  `reg_time` timestamp NOT NULL,
  PRIMARY KEY (`stu_num`)
)

1、创建job

File --> New --> Job,在新建的Job上,ctrl+s,命名为stu_etl,保存到文件

2、创建数据连接

File --> New --> Database connection...

把这个流程中需要用到的数据库连接全部创建起来,本例中就两个

先测试一下数据源的连通性,如果提示找不到驱动,上Mysql官网下载驱动包:

https://dev.mysql.com/downloads/connector/j/
Select Operating System: Platform Independent

由于在mysql-connector-java-5.1.48以后的版本中,用com.mysql.jdbc.Driver替代了org.gjt.mm.mysql.Driver,所以只能下载mysql-connector-java-5.1.48版本的jar包

下载完成之后,解压,把驱动jar包放在data-integration/lib下

创建的数据库连接在

可以看到,然后在建好的数据源上,右键,Share,这样整个工程就都可以用这两个数据源了

3、创建起始点

添加Start元素到Job stu_etl中

4、新建transformation。从目标表中取出上次抽取的最大学号,保存到变量中,作为本次抽取的起点

File --> New --> Transformation,在新建的Transformation上,ctrl+s,命名为get_start_stunum,保存到文件

将Transformation get_start_stunum添加到Job stu_etl中

转到get_start_stunum

添加Input/Table Input

接着添加Job/Set variable

并把Table Input getMaxStuNum连向这个Set variable

注意,variable scope type需要选择valid the patent job,即父级job可见,这样才能在job中从当前transformation流向下一个transformation

注意,一定要写default value,因为初始的时候,通过Table Input getMaxStuNum拿到的数据肯定是空的,因为分析表里在初始状态下是没有数据的。

5、创建transformation,在上次抽取的基础上接着抽

同样在创建Transformation data_from_src_to_anay,添加到job中,并将Transformation get_start_stunum连向Transformation data_from_src_to_anay

在Transformation data_from_src_to_anay上设置传入变量

然后在Transformation data_from_src_to_anay中添加

input/table input从源表中获取数据,由于学生年龄和注册时间两个字段类型不匹配,所以需要必要的转换

注意,由于需要用到Transformation get_start_stunum传过来的变量,所以这里必选勾选Replace variable in script

在input和output中间添加两表的映射关系Transform/select values

output/table output将数据存到分析表中

6、创建结束点(Success)

这是必须的,否则etl进程所持有的数据库连接等资源将得不到释放

运行,成功!!!

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
kettle是一款强大的ETL工具,可以用于数据抽取、转换和加载。如果要使用kettle抽取数据库内所有数据,可以按照以下步骤进行操作: 1. 首先,通过kettle数据库连接功能连接到目标数据库。你需要提供数据库的连接信息,包括数据库类型、主机名、端口号、数据库名称、用户名和密码等。 2. 在kettle的工作区中创建一个新的Transformation(转换)任务。在Transformation中,你可以添加多个步骤来完成数据抽取的过程。 3. 在Transformation中添加一个"Table Input"(输入)步骤。在该步骤的设置中,选择目标数据库,并选择要抽取数据。 4. 添加一个输出步骤,例如"Text File Output"(文本文件输出)。在该步骤的设置中,选择输出的文件路径和格式,以及要包含的字段。 5. 可以根据需要添加其他步骤,例如数据转换、数据过滤等,以满足数据处理的要求。 6. 运行Transformation,kettle将按照设定的步骤顺序依次执行,并将数据库内所有数据抽取到指定的输出文件中。 7. 完成数据抽取后,你可以根据需要对输出的文件进行进一步处理,例如导入到其他系统或数据库中。 总结起来,使用kettle抽取数据库内所有数据的过程包括连接数据库、创建Transformation任务、设置数据抽取步骤、运行任务并输出结果。这样就可以方便地将数据库内的数据提取到指定的输出文件中,为后续的数据处理和分析提供方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值