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

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

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

概述

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库中的用户表数据是否是合并的结果数据。

相关推荐

恢复软件6款汇总推荐,帮你减轻数据恢复压力!

在当今数字化生活中,数据丢失的风险如影随形。无论是误删文件、硬盘故障,还是遭遇病毒攻击,丢失的数据都可能给我们带来不小的麻烦。此时,一款优秀的数据恢复软件就成为了挽救数据的关键。今天,为大家汇总推荐...

中兴星星一号刷回官方原版recovery的教程

【搞科技教程】中兴星星一号的官方recovery也来说一下了,因为之前给大家分享过了第三方的recovery了,之前给大家分享的第三方recovery也是采用一键刷入的方式,如果细心的朋友会发现,之前...

新玩机工具箱,Uotan柚坛工具箱软件体验

以前的手机系统功能比较单调,各厂商的重视程度不一样,所以喜欢玩机的朋友会解锁手机系统的读写权限,来进行刷机或者ROOT之类的操作,让使用体验更好。随着现在的手机系统越来越保守,以及自身功能的增强,...

三星g906k刷recovery教程_三星g906k中文recovery下载

【搞科技教程】看到有一些机友在找三星g906k的第三方recovery,下面就来说一下详细的recovery的刷入方法了,因为手机只有有了第三方的recovery之后才可以刷第三方的root包和系统包...

中兴星星2号刷recovery教程_星星二号中文recovery下载

【搞科技教程】咱们的中兴星星2手机也就是中兴星星二号手机的第三方recovery已经出来了,并且是中文版的,有了这个recovery之后,咱们的手机就可以轻松的刷第三方的系统包了,如果没有第三方的re...

数据恢复软件有哪些值得推荐?这 6 款亲测好用的工具汇总请收好!

在数字生活中,数据丢失的阴霾常常突如其来。无论是误删工作文档、格式化重要磁盘,还是遭遇系统崩溃,都可能让我们陷入焦虑。关键时刻,一款得力的数据恢复软件便是那根“救命稻草”。今天,为大家精心汇总6...

中兴u956刷入recovery的教程(中兴e5900刷机)

【搞科技教程】这次主要来给大家说说中兴u956手机如何刷入第三方的recovery,因为第三方的recovery工具是咱们刷第三方rom包的基础,可是很我欠却不会刷,所以太这里来给大家整理了一下详细的...

联想A850+刷recovery教程 联想A850+第三方recovery下载

【搞科技教程】联想A850+的第三方recovery出来了,这个第三方的recovery是非常的重要的,比如咱们的手机要刷第三方的系统包的时候,都是需要用到这个第三方的recovery的,在网上也是有...

工具侠重大更新 智能机上刷机一条龙完成

工具侠是针对玩机的机油开发的一款工具,不管是发烧级别的粉丝,还是普通小白用户,都可以在工具侠上找到你喜欢的工具应用。这不,最新的工具侠2.0.16版本,更新了专门为小白准备的刷机助手工具,以及MTK超...

shift+delete删除的文件找回6种硬盘数据恢复工具

硬盘作为电脑的重要存储设备,如同一个巨大的数字仓库,承载着我们日常工作、学习和生活中的各种文件,从珍贵的照片、重要的工作文档到喜爱的视频、音乐等,都依赖硬盘来安全存放。但有时,我们可能会不小心用sh...

使用vscode+Deepseek 实现AI编程 基于Cline和continue

尊敬的诸位!我是一名专注于嵌入式开发的物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与AI的无尽可能。这两天deepseek3.0上线,据说编程能力比肩Cl...

详解如何使用VSCode搭建TypeScript环境(适合小白)

搭建Javascript环境因为TypeScript不能直接在浏览器上运行。它需要编译器来编译并生成JavaScript文件。所以需要首先安装好javascript环境,可以参考文章:https://...

使用VSCode来书写你的Jupyter Notebooks

现在你可以在VScode里面来书写你的notebook了,使用起来十分的方便。下面来给大家演示一下环境的搭建。首先需要安装一个jupyter的包,使用下面的命令安装:pip3install-ih...

使用VSCode模板提高Vue开发效率(vscode开发vue插件)

安装VSCode安装Vetur和VueHelper插件,安装完成后需要重启VScode。在扩展插件搜索框中找到如下Vetur和VueHelper两个插件,注意看图标。添加Vue模板打...

干货!VsCode接入DeepSeek实现AI编程的5种主流插件详解

AI大模型对编程的影响非常之大,可以说首当其冲,Cursor等对话式编程工具渐渐渗透到开发者的工作中,作为AI编程的明星产品,Cursor虽然好用,但是贵啊,所以咱们得找平替,最好免费那种。俗话说,不...