文章目录

  • 一、抽取的数据量特别大,2000万条数据,内存不能一次性加载出来时,可以采用分页查询的办法。构建分页、循环执行。
  • 主体作业
  • 1、build_query_page转换
  • 1.1自定义常量数据,先确定元数据、然后确定数据
  • 1.2字段选择,先确定字段名称、然后确定元数据
  • 1.3复制记录到结果字符串
  • 2、 loop_execute作业
  • 2.1 设置变量转换
  • 2.1.1从上一步获取结果
  • 2.1.2增加常量
  • 2.1.3 计算器1
  • 2.1.4计算器2
  • 2.1.5 设置变量
  • 2.2 执行分页查询转换
  • 二、作业的执行顺序


一、抽取的数据量特别大,2000万条数据,内存不能一次性加载出来时,可以采用分页查询的办法。构建分页、循环执行。

主体作业

kettle读mysql表不准_kettle读mysql表不准


双击loop_execute作业,设置对每个输入执行一次

kettle读mysql表不准_mysql_02

具体做法:

1、build_query_page转换

kettle读mysql表不准_etl工程师_03

1.1自定义常量数据,先确定元数据、然后确定数据

kettle读mysql表不准_etl工程师_04


kettle读mysql表不准_字段_05


当然这里也可采用mysql查询出一个页码序列

SELECT help_keyword_id num
FROM mysql.help_keyword
HAVING num BETWEEN 1 AND 100
ORDER BY 1;
1.2字段选择,先确定字段名称、然后确定元数据

kettle读mysql表不准_kettle读mysql表不准_06


kettle读mysql表不准_kettle读mysql表不准_07

1.3复制记录到结果字符串

kettle读mysql表不准_mysql_08

2、 loop_execute作业

kettle读mysql表不准_mysql_09

2.1 设置变量转换

kettle读mysql表不准_数据_10

2.1.1从上一步获取结果

kettle读mysql表不准_kettle读mysql表不准_11

2.1.2增加常量

kettle读mysql表不准_kettle读mysql表不准_12

2.1.3 计算器1

kettle读mysql表不准_数据_13

2.1.4计算器2

kettle读mysql表不准_kettle读mysql表不准_14

2.1.5 设置变量

kettle读mysql表不准_mysql_15

2.2 执行分页查询转换

转换的目的是为了将orcl中的NEW_TEST表中的数据部分更新,要与mysql中的STUDENT表进行关联,关联到student中的s_name,更新NEW_TEST中的NAME字段。

kettle读mysql表不准_字段_16


kettle读mysql表不准_etl工程师_17


kettle读mysql表不准_数据_18


kettle读mysql表不准_mysql_19


kettle读mysql表不准_mysql_20

kettle读mysql表不准_mysql_21


得出的结论是,kettle根本不适合不同库之间的关联,数据量小还好,太慢了。插入更新也慢得很。kettle最适合数据增量同步,表输出这种。最好的解决办法是把orcl的数据同步到mysql,在mysql关联查出出数据后再同步到orcl。