百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Kettle(PDI)转换中输出之表输出详解

bigegpt 2024-08-28 12:22 3 浏览

概述

Table output(表输出)此步骤将数据加载到数据库表中。表输出步骤相当于SQL操作符INSERT,是只需要插入记录时的一种解决方案。如果只想更新行的数据,应该使用更新步骤。要同时执行INSERT和UPDATE命令,请参见插入/更新步骤

此步骤提供了目标表的配置选项和与性能相关的选项,如提交记录数量和使用批量插入。有一些特定于数据库类型的性能设置可以在数据库连接JDBC属性中设置。有关特定的JDBC性能设置,请参考数据库文档。

注意:如果将一条记录插入到具有标识列的数据库表中,JDBC驱动程序将返回执行插入时使用的自动生成的关键字。这并不是所有数据库类型都支持的。

选项

Table output(表输出)步骤有以下选项:

Step name(步骤名称):在画布上指定Table output(表输出)步骤的唯一名称。您可以自定义名称或将其保留为默认名称。

Connection(数据库连接):通过列表选择要将数据写入其中的现有数据库连接的名称。选择根据你修改的数据库连接。如果您没有现有的连接,请单击新建或Wizard。如果需要修改现有的连接,请单击“编辑”。

Target schema(目标模式):指定数据库模式的名称。

Target table(目标表):指定要写入数据的表的名称。

Commit size(提交记录数量):指定提交批处理的大小。大小是在向数据库发送COMMIT命令之前要执行的INSERT语句的数量。指定提交大小可能会改变性能。并不是所有数据库平台都支持事务。

Truncate table(截断表):在将第一行插入表之前,选择截断表。如果您将在集群上或使用此步骤的多个副本运行转换,则必须在开始转换之前截断表。

Ignore insert errors(忽略插入错误):选择忽略所有插入错误,如违反主键。最多将记录20个警告。此选项不适用于批处理插入。

Specify database fields(指定数据库字段):选择指定数据库字段选项卡中的字段。否则,默认情况下将插入所有字段。必须选择此选项才能使用数据库字段选项卡中的获取字段和输入字段映射工具。

SQL (button)(SQL(按钮)):单击以打开简单的SQL编辑器。编辑器自动生成创建输出表所需的SQL。如果需要,可以修改SQL语句,或者单击执行运行SQL并生成表。SQL编辑器使用目标表字段中指定的名称创建目标表。

  • 主选项卡包含如下选项内容

Partition data over tables(表分区数据):选择根据该分区字段中指定的日期字段的值将数据分割到多个表上。选择此选项后,将数据插入其名称遵循模式<target-table>_<date-format>的表中。在运行转换之前,必须手动创建这些表,以便将数据插入到这些表中。有关日期格式的详细信息,请参阅每月分区数据/每天分区数据。

Partitioning field(分区字段):指定要用于确定如何跨多个表拆分值的日期字段。此值用于生成将数据插入其中日期的表名。

Partition data per month/ Partition data per day(每个月分区数据/每天分区数据):确定对表进行分区时在表名中使用的日期格式:yyyyMM表示每月分区数据,yyyyMMdd表示每天分区数据。

Use batch update for inserts(使用批量插入):选择使用批处理插入。此选项对INSERT语句进行分组,从而限制对数据库的往返。默认情况下启用此选项。批处理模式仅在满足以下条件时使用:选中“使用批量插入”复选框;提交记录数量选项大于0;返回一个自动产生的关键字选项被清除。转换不能使用唯一连接;数据库类型支持批处理更新。有一些限制因素取决于数据库类型和更多的步骤选项。

Is the name of the table defined in a field?(表名定义在一个字段里?):选择此选项可在包含表名的字段中指定目标表的名称。此选项允许根据包含表名的字段的值,将来自各行的数据存储在不同的表中。例如,如果您将客户数据存储在名为gender的字段中,那么数据可能最终位于Male和Female表中。

Field that contains name of table(包含表名的字段):当选择选项表名定义在一个字段里?时,指定用于表名称的字段名。

Store the table name field(存储表名字段):选择在输出中存储表名。使用此选项时,表必须包含一个列,该列的名称与您在包含表名的字段中定义的名称相同。

Return auto-generated key(返回一个自动产生的关键字):选择返回通过在表中插入一行生成的关键字。

Name of auto-generated key field(自动产生的关键字的字段名称):在包含自动生成的关键字的输出行中指定新字段的名称。

  • 数据库字段选项卡包含如下选项

数据库字段允许您指定输入中的哪些字段插入到表中。您可以将字段从输入映射到输出中的列。

Table Field(表字段):要将数据插入其中的数据库列的名称。

Stream Field(流字段):从源/输入步骤读取并插入到数据库中的流字段。

Get fields (button)(获取字段按钮):单击此处将字段从数据源导入到数据库字段表中。要激活此工具,必须在通用区域中指定数据库字段选项。

Enter field mapping (button)(输入字段映射(按钮)):单击以打开输入映射窗口。要激活此工具,必须在通用区域中指定数据库字段选项。

  • 输入字段映射窗口包含如下选项

Source fields(源字段):来自传入流的字段名称列表。

Target fields(目标字段):输出表中的字段。

Add (button)(添加(按钮)):单击添加可将选定的字段名称和列名组合移动到映射窗口中。

Delete (button)(删除(按钮)):单击删除将映射组合从映射窗口移回源字段和目标字段窗口。

Mappings(映射):字段到列的映射,指示输入字段和将分配字段的表列。

Auto target selection?(自动选择目标):选择使该步骤执行到目标的映射。

Hide assigned source fields?(隐藏已经匹配的源字段):在匹配并移动到映射窗口时,将字段从源字段窗口中删除。

Auto source selection(自动选择源):在选择列名时,自动从源字段窗口中选择字段。

Hide assigned target fields?(隐藏已经匹配的目标字段):当目标字段窗口已经匹配并移动到映射窗口时,将该字段从目标字段窗口中删除。

Guess (button)(猜一猜(按钮)):单击猜一猜执行所有字段的自动匹配并填充映射窗口。

示例

示例采用两个数据库的用户表,把两个数据库demo和ceshi的用户合并并插入到中心数据库center的用户表中。为了演示,sql语句很简化,不可以作为实际业务场景,其表sql语句如下。

CREATE DATABASE `demo` ;
USE `demo`;
/*用户表 */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(20) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `user`(`username`,`password`) values ('hanmeimei','123456');
insert into `user`(`username`,`password`) values ('lisi','123456');
insert into `user`(`username`,`password`) values ('zhangsan','123456');

CREATE DATABASE `ceshi` ;
USE `ceshi`;
/*用户表 */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(20) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `user`(`username`,`password`) values ('wangwu','123456');
insert into `user`(`username`,`password`) values ('zhaoliu','123456');
insert into `user`(`username`,`password`) values ('wuqi','123456');
CREATE DATABASE `center` ;
USE `center`;
/*用户表 */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(20) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.建立数据库连接对象

示例采用mysql数据库作为示例,首先下载mysql驱动https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.47,然后放在在文件夹\data-integration\lib下。然后重启Spoon。如果已经添加过mysql驱动,则可由忽略此步骤。

切换至主对象树,双击DB连接。


然后选项连接类型为mysql,并维护相关的链接信息。


连接信息维护完之后,点击测试,测试连接是否成功。

2.获取用户表User数据作为数据输入源。

添加两个表输入步骤,其中一个数据库连接上面创建的DB连接名称demo,第二个数据库连接上面创建的DB连接名称测试,然后从获取SQL查询语句中选择表User,并按username进行排序。

最后点击预览,预览结果数据。

3.添加链接中的合并记录输出步骤,并配置合并记录输出选项

添加一个链接中的数据同步输出。并建立从表输入到合并记录的节点连接。

在合并记录的步骤上,旧数据源为:表输入;新数据源为:表输入 2;标志字段为:flagfield;匹配的关键字为:username;数据字段为:username、password;

4.添加输出中的表输出步骤,并配置表输出选项

添加一个输出中的表输出。并建立从合并记录到表输出的节点连接。

在表输出进行相关选项的配置。

数据连接为:center;目标表为:user;选中指定数据库字段;

切换至数据库字段选项卡,然后点击获取字段,保留username,password即可。

最后保存并点击运行。

然后查看center库中的用户表数据是否是合并的结果数据。

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...