Pentaho/PDI/Kettle:如何用 Excel 电子表格中的值填充“插入/更新”?

Posted

技术标签:

【中文标题】Pentaho/PDI/Kettle:如何用 Excel 电子表格中的值填充“插入/更新”?【英文标题】:Pentaho/PDI/Kettle: How to fill "Insert / Update" with values from an Excel-Spreadsheet? 【发布时间】:2019-12-28 18:03:31 【问题描述】:

我有一个 Excel 电子表格,其中:

    A 列填满了目标字段的名称(表字段) B 列提供源字段(流字段)的名称 C 列告诉您是否更新该字段,即值是“Y”还是“N” D 列和 E 列分别提供目标和源字段的主键。 行数:超过 50 万

现在,我想将这些值自动发送到“插入/更新”步骤,即不想复制和粘贴; PDI 应该全力以赴。 看了“ETL 元数据注入”,认为我可以轻松地将 A 列拉到 C 列。但我根本不知道如何传递主键;让我们换一种说法,我不知道如何告诉该步骤使用某些值作为主键。 如果它使事情变得更容易,也可以使用 CSV 文件输入或文本文件输入。 任何帮助表示赞赏。提前致谢!

【问题讨论】:

【参考方案1】:

我不确定您是否可以实现这一点,因为元数据注入保留了通用文件结构,并且您无法定义该列是否为主列。 在这个阶段不要使用主键验证,因为调试和错误处理的过程会很复杂。 将信息推送到临时表中,然后编写一个逻辑来填充同一个主表。这将节省您的大量精力。

【讨论】:

感谢您的想法!仅供参考:每个源表都有自己的目标表,没有主表。为什么?我正在提取 salesforce-module-rows,即不能将 Account-module 中的行与 Lead 中的行混淆。 如果我理解正确,您希望我在源表和目标表之间建立一个表,对吗?我的第一个想法是用 SQL 语句/脚本/任何东西替换“插入/更新”,但我担心如果该语句运行 500k 行和大量列的话,这项工作会运行得很慢。跨度> 有大量记录和列从不使用插入/更新步骤。根据我的经验,使用批量插入步骤或输出步骤来填充暂存,然后通过 SQL 语句运行转换和填充以加快处理速度。您可以利用索引来进一步提高 sql 脚本的性能。

以上是关于Pentaho/PDI/Kettle:如何用 Excel 电子表格中的值填充“插入/更新”?的主要内容,如果未能解决你的问题,请参考以下文章

如何用eclipse进行jar文件打包?

如何用golang写游戏加经验函数不出错

如何用Qt连接数据库并导入文件?

如何用批处理建立新文件,并向新文件写入指定内容

如何用javascript 跨域获取iframe子页面的元素信息

从转载阿里开源项目 Egg.js 技术文档引发的“版权纠纷”,看宽松的 MIT 许可该如何用?...