ETL工具kettle spoon使用说明

时间:2022-12-29 10:57:35

实验一:表到表的数据转换

实验目的:

将SQLServer数据库中user表的数据传输到Oracle数据库中TABLE_USER表中,当发现重复数据时,先删除旧数据,再插入新数据。传输过程中无任何数据转换。

源字段

目标字段

user.id

TABLE_USER.ID

user.name

TABLE_USER.NAME

实验数据:

源:SQLServer数据库user表,共有3条数据,如下图:

目标:Oracle数据库TABLE_USER表,无数据,如下图:

预期结果:

源表中的3条数据逐一添加到目标表中。

实验过程:

1、在“文件”菜单中,选择“转换”,新建一个转换方案

2、在“输入”目录中,拖拽添加一个“表输入”对象

3、双击新建的对象,编辑该对象

A、输入合理、易懂的步骤名称

B、点击数据库连接右边的“新建”按钮,新建一个数据库连接

4、新建一个SQLServer数据库连接

A、连接类型选择:MS SQL Server

B、依次填写主机名、数据库名、实例名、端口号、登录用户名、登录密码

C、点击“Test”按钮,进行连接测试,如连接成功,则弹出成功提示框

连接成功,弹出下面提示框:

5、点击“获取SQL查询语句”按钮,选择源表

6、在弹出的表选择画面上,选择源表,这里选择user表,点击“OK”按钮

7、可以看到相应的查询SQL文,点击“预览”按钮,可以查看数据

8、数据显示窗口

9、点击“确定”按钮,完成输入对象的配置

10、从“输出”目录中,拖拽添加一个“删除”对象,将鼠标放置在输入对象上,按住“Shift”键,同时按住鼠标左键,拉动箭头,建立输入源到删除目标的指向关系。

    * 建立本步骤的目的,是先删除具有相同主键的旧数据,防止传输数据时,出现主键重复错误。

11、双击“删除”对象,编辑该对象

A、输入合理、易懂的步骤名称

B、点击“新建”按钮,建立新的数据库连接(因为目标表是Oracle类型的,所以需要新建连接。如果目标表和输入表属于同一个数据库连接,可以直接从“数据库连接”下拉菜单中选择。)

12、建立新的Oracle数据库连接

A、输入连接名

B、依次输入主机名、数据库名、端口号、登录用户名、登录密码

C、点击“Test”按钮,测试连接是否成功

D、点击“OK”按钮

连接成功的情况下,弹出以下提示框:

13、点击“目标表”右侧的“浏览”按钮,选择待删除记录的目标表

14、在表选择窗口中,选择待删除记录的表,这里选择“TABLE_USER”表,点击“OK”按钮

15、设置“查询值所需的关键字”,然后点击“确定”按钮

A、表字段:ID(目标表主键)

B、比较符:=

C、流里的字段1:id(源表主键)

这里的含义是:当目标表字段“ID”出现与源表中字段“id”相等的记录时,删除目标表中的该条记录,防止数据插入时,出现主键重复错误。

16、复制并粘贴之前建立的输入对象,如图:

17、从“输出”目录中,拖拽添加一个“表输出”对象,将鼠标放置在输入对象上,按住“Shift”键,同时按住鼠标左键,拉动箭头,建立输入源到输出目标的指向关系。如图:

18、双击“表输出”对象,编辑该对象

A、输入合理、易懂的步骤名称

B、数据库连接选择“Oracle”

C、目标表选择“TABLE_USER”

D、选中“Specify database fields”

E、切换标签到“Database fields”

F、点击“Enter field mapping”按钮

19、选择源表到目标表的映射关系,然后点击“Add”按钮

建立完映射关系后的结果,如图所示:

20、点击“确定”按钮

21、至此,一个完整的表到表数据传输步骤就建立完毕了。

22、保存该过程为一个*.ktr文件(一个符合xml标准的文件),然后执行该过程,如图,点击上方的“绿色三角”

点击“启动”按钮

23、执行后结果:

成功执行的日志:

可以看到,目标表中新添加了3条数据。

实验二:视图到表的数据转换

实验目的:

将SQLServer数据库中userview视图的数据传输到Oracle数据库中TABLE_USER表中,传输过程中没有数据转换。

源字段

目标字段

userview.id

TABLE_USER.ID

userview.name

TABLE_USER.NAME

实验数据:

源:SQLServer数据库userview视图,共有3条数据,如下图:

目标:Oracle数据库TABLE_USER表,无任何数据,如下图:

预期结果:

TABLE_USER表中新添加3条记录。

实验过程:

1、在“文件”菜单中,选择“转换”,新建一个转换方案

2、在“输入”目录中,拖拽添加一个“表输入”对象

3、双击新建的对象,编辑该对象

A、输入合理、易懂的步骤名称

B、点击数据库连接右边的“新建”按钮,新建一个数据库连接

4、新建一个SQLServer数据库连接

A、连接类型选择:MS SQL Server

B、依次填写主机名、数据库名、实例名、端口号、登录用户名、登录密码

C、点击“Test”按钮,进行连接测试,如连接成功,则弹出成功提示框

连接成功,弹出下面提示框:

5、点击“获取SQL查询语句”按钮,选择源视图

6、在弹出的表选择画面上,选择源视图,这里选择userview视图,点击“OK”按钮

7、可以看到相应的查询SQL文,点击“预览”按钮,可以查看数据

8、数据显示窗口

9、点击“确定”按钮,完成输入对象的配置

10、从“输出”目录中,拖拽添加一个“删除”对象,将鼠标放置在输入对象上,按住“Shift”键,同时按住鼠标左键,拉动箭头,建立输入源到删除目标的指向关系。

    * 建立本步骤的目的,是先删除具有相同主键的旧数据,防止传输数据时,出现主键重复错误。

11、双击 “删除”对象,编辑该对象

A、输入合理、易懂的步骤名称

B、点击“新建”按钮,建立新的数据库连接(因为目标表是Oracle类型的,所以需要新建连接。如果目标表和输入表属于同一个数据库连接,可以直接从“数据库连接”下拉菜单中选择。)

12、建立新的Oracle数据库连接

A、输入连接名

B、依次输入主机名、数据库名、端口号、登录用户名、登录密码

C、点击“Test”按钮,测试连接是否成功

D、点击“OK”按钮

连接成功的情况下,弹出以下提示框:

13、点击“目标表”右侧的“浏览”按钮,选择待删除记录的目标表

14、在表选择窗口中,选择待删除记录的表,这里选择“TABLE_USER”表,点击“OK”按钮

15、设置“查询值所需的关键字”,然后点击“确定”按钮

A、表字段:ID(目标表主键)

B、比较符:=

C、流里的字段1:id(源表主键)

这里的含义是:当目标表字段“ID”出现与源表中字段“id”相等的记录时,删除目标表中的该条记录,防止数据插入时,出现主键重复错误。

16、复制并粘贴之前建立的输入对象,如图:

17、从“输出”目录中,拖拽添加一个“表输出”对象,将鼠标放置在输入对象上,按住“Shift”键,同时按住鼠标左键,拉动箭头,建立输入源到输出目标的指向关系。如图:

18、双击“表输出”对象,编辑该对象

A、输入合理、易懂的步骤名称

B、数据库连接选择“Oracle”

C、目标表选择“TABLE_USER”

D、选中“Specify database fields”

E、切换标签到“Database fields”

F、点击“Enter field mapping”按钮

19、选择源表到目标表的映射关系,然后点击“Add”按钮

建立完映射关系后的结果,如图所示:

20、点击“确定”按钮

21、至此,一个完整的表到表数据传输步骤就建立完毕了。

22、保存该过程为一个*.ktr文件(一个符合xml标准的文件),然后执行该过程,如图,点击上方的“绿色三角”

点击“启动”按钮

23、执行后结果:

    可以看到,该表中新添加了3条数据。

实验三:值映射

实验目的:

将SQLServer数据库中userview视图的数据分别传输到Oracle数据库中TABLE_USER表和TABLE_USERINFO中,传输过程中有数据转换。

源字段

目标字段

userview.id

TABLE_USER.ID、TABLE_USERINFO.ID

userview.name

TABLE_USER.NAME

userview.age

TABLE_USERINFO.ARG

userview.birthday

TABLE_USERINFO.BIRTHDAY

userview.card

TABLE_USERINFO.CARD

实验数据:

源:SQLServer数据库userview视图,共有3条数据,其中姓名为“张三”的记录,名字改成了“张三_新”,如下图:

目标:Oracle数据库TABLE_USER表,共有3条通过实验二添加的数据,3条记录的名字分别为张三、李四、王五,如下图:

目标:Oracle数据库TABLE_USERINFO表,无任何数据,如下图:

预期结果:

TABLE_USER表中仍然为3条记录,其中,姓名为“张三”的记录,应更新为“张三_新”;

TABLE_USERINFO表中新添加3条记录。

实验过程:

1、在“文件”菜单中,选择“转换”,新建一个转换方案

2、在“输入”目录中,拖拽添加一个“表输入”对象

3、双击新建的对象,编辑该对象

A、输入合理、易懂的步骤名称

B、点击数据库连接右边的“新建”按钮,新建一个数据库连接

4、新建一个SQLServer数据库连接

A、连接类型选择:MS SQL Server

B、依次填写主机名、数据库名、实例名、端口号、登录用户名、登录密码

C、点击“Test”按钮,进行连接测试,如连接成功,则弹出成功提示框

连接成功,弹出下面提示框:

5、点击“获取SQL查询语句”按钮,选择源视图

6、在弹出的表选择画面上,选择源视图,这里选择userview视图,点击“OK”按钮

7、可以看到相应的查询SQL文,点击“预览”按钮,可以查看数据

8、数据显示窗口

9、点击“确定”按钮,完成输入对象的配置

10、从“输出”目录中,拖拽添加两个“删除”对象(因为本次实验的目标表为两个),将鼠标放置在输入对象上,按住“Shift”键,同时按住鼠标左键,拉动箭头,分别建立输入源到两个删除目标的指向关系。

    * 建立本步骤的目的,是先删除具有相同主键的旧数据,防止传输数据时,出现主键重复错误。

11、双击第一个“删除”对象,编辑该对象,建立针对TABLE_USER表的删除步骤

A、输入合理、易懂的步骤名称

B、点击“新建”按钮,建立新的数据库连接(因为目标表是Oracle类型的,所以需要新建连接。如果目标表和输入表属于同一个数据库连接,可以直接从“数据库连接”下拉菜单中选择。)

12、建立新的Oracle数据库连接

A、输入连接名

B、依次输入主机名、数据库名、端口号、登录用户名、登录密码

C、点击“Test”按钮,测试连接是否成功

D、点击“OK”按钮

连接成功的情况下,弹出以下提示框:

13、点击“目标表”右侧的“浏览”按钮,选择待删除记录的目标表

14、在表选择窗口中,选择待删除记录的表,这里选择“TABLE_USER”表,点击“OK”按钮

15、设置“查询值所需的关键字”,然后点击“确定”按钮

A、表字段:ID(目标表主键)

B、比较符:=

C、流里的字段1:id(源表主键)

这里的含义是:当目标表字段“ID”出现与源表中字段“id”相等的记录时,删除目标表中的该条记录,防止数据插入时,出现主键重复错误。

16、双击第二个“删除”对象,编辑该对象,建立针对TABLE_USERINFO表的删除步骤

A、输入合理、易懂的步骤名称

B、数据库连接选择“Oracle”

C、点击“目标表”右侧的“浏览”按钮,选择待删除记录的目标表

17、在表选择窗口中,选择待删除记录的表,这里选择“TABLE_USERINFO”表,点击“OK”按钮

18、设置“查询值所需的关键字”,然后点击“确定”按钮

A、表字段:ID(目标表主键)

B、比较符:=

C、流里的字段1:id(源表主键)

这里的含义是:当目标表字段“ID”出现与源表中字段“id”相等的记录时,删除目标表中的该条记录,防止数据插入时,出现主键重复错误。

19、复制并粘贴之前建立的输入对象,如图:

20、从“输出”目录中,拖拽添加一个“表输出”对象,将鼠标放置在输入对象上,按住“Shift”键,同时按住鼠标左键,拉动箭头,建立输入源到输出目标的指向关系。这一步,是建立源视图到目标表TABLE_USER的数据传输过程,没有数据转换过程,与实验一类似。如图:

21、双击“表输出”对象,编辑该对象

A、输入合理、易懂的步骤名称

B、数据库连接选择“Oracle”

C、目标表选择“TABLE_USER”

D、选中“Specify database fields”

E、切换标签到“Database fields”

F、点击“Enter field mapping”按钮

22、选择源表到目标表的映射关系,然后点击“Add”按钮

建立完映射关系后的结果,如图所示:

23、点击“确定”按钮

24、至此,源视图到目标表TABLE_USER的数据传输过程就建立完毕了

25、从“转换”目录中,拖拽添加一个“值映射”对象,并建立输入对象与值映射对象的指向关系。

    * 在本次数据传输中,涉及到用户的证件类型字段,源视图中存放的值是:身份证、护照,而目标表中应存放该值相应的代码:身份证=3、护照=4,因此,此处需要用到值映射对象,处理值的映射。

26、双击“值映射”对象,并编辑该对象,点击“确定”按钮

A、输入合理、易懂的名称

B、使用的字段名:选择需要做值转换的字段名(这里选择card)

C、目标字段名:不同于原有字段的新字段名,保存转换后的值(这里输入newcard)

D、字段值列表:分别填写源值和目标值

27、从“输出”目录中,拖拽添加“表输出”对象,同时从值映射对象中引出箭头指向表输出对象。该对象用于建立源视图到表TABLE_USERINFO的数据传递。

28、双击“表输出”对象,编辑该对象

A、输入合理、易懂的步骤名称

B、数据库连接选择“Oracle”

C、目标表选择“TABLE_USERINFO”

D、选中“Specify database fields”

E、切换标签到“Database fields”

F、点击“Enter field mapping”按钮

29、选择源表到目标表的映射关系,然后点击“Add”按钮

建立完映射关系后的结果,如图所示:

这里可以看到,CARD字段对应的源字段是newcard,而不是card

30、点击“确定”按钮

31、至此,一个完整的视图到多表,且带有数据转换过程的步骤就建立完毕了。

通过下图我们可以看到:该过程的原理是,先将TABLE_USER表和TABLE_USERINFO表的旧数据删除,再将源视图中的数据同步到两个目标表中。

32、保存该过程为一个*.ktr文件(一个符合xml标准的文件),然后执行该过程,如图,点击上方的“绿色三角”

点击“启动”按钮

23、执行后结果:

A、执行日志:

B、TABLE_USER表记录(“张三“更新成了“张三_新”):

C、TABLE_USERINFO表记录(新增加了3条记录):

Pdi——ce——4.0.1