如何通过 Pentaho Data Integration 的 table_output 步骤填充表格?

Posted

技术标签:

【中文标题】如何通过 Pentaho Data Integration 的 table_output 步骤填充表格?【英文标题】:How to populated the table via Pentaho Data Integration's table_output step? 【发布时间】:2017-09-26 18:49:24 【问题描述】:

我正在通过 Pentaho 7.1 执行 ETL 工作。 工作是通过 Pentaho Jobs 和转换在 PostgreSQL 9.2 中填充表“PRO_T_TICKETS”?

我已经根据流字段映射了表字段

Mapped Fields

我的表 PRO_T_TICKETS 包含大写的架构(列名)。 这是我无法使用 ETL 作业填充表 PRO_T_TICKETS 的原因吗?

我将步骤 TABLE_OUTPUT 复制到 PRO_T_TICKETS 并将目标表字段更改为“PRO_T_TICKETS2”。 Pentaho 使用小写模式创建了一个新表,并在其中填充了数据。

但我希望这些数据仅上传到表 PRO_T_TICKETS 中,并尽可能使用大写模式。

我在这里附上整个工作和 Pentaho 抛出的错误。 Pentaho Error 我还通过在列名中添加双引号来尝试查询,正如您在错误中看到的那样。但这没有帮助。

你觉得我应该怎么做?

【问题讨论】:

【参考方案1】:

创建(或修改)连接时,选择左侧面板上的Advanced,然后单击Force to upper caseForce to lower case,或者更好的是Preserve case of reserved words

要知道选择哪个选项,请复制错误日志的第 4 行,即 SQL-developer 工具中以 INSERT INTO "public"."PRO_T_TICKETS("OID"... 开头的行,然后更改连接高级参数,直到它起作用。

另外,在调试时,不要使用 batch updates,不要在前面的步骤中使用 lazy conversion,并尝试使用一 (1) 个字段而不是全部 (25) 个字段。

【讨论】:

将错误的第 4 行复制到 SQL 开发人员工具后,我没有得到您。然后做什么? @AlainD SQL-developer 是否给你一个错误?如果不是,那么问题不在于输出步骤(是的,kettle 有时会混淆错误的来源)。如果是,那么您知道错误是什么(这可能不是您假设的大写/小写问题)。【参考方案2】:

只是作为补充:它对我有用,它遵循 AlainD 的提示并使用我想与您分享的特定配置。我有一个使用表输入和输出从 mysql 到 PostgreSQL 的转换流数据。在两个数据库中,我都有大写对象。

我按照正确的方式执行了以下步骤:

    在表输入 (MySQL) 中,对象也是大写的,但我输入的是小写字母,但我没有在 DB Connection 中设置任何特殊选项。 在表输出 (PostgreSQL) 中,我以大写形式输入所有内容(架构、表名和列),还设置了“指定数据库字段”(单击“获取字段”)。 在目标数据库连接 (PostgreSQL) 中,我放置了选项(在“高级”部分):“引用数据库中的所有内容”和“保留保留字的大小写”。

PS:啊,最后一个选项是因为我发现我的字段还有一个问题:有一个名为“Admin”的列(是的,他们使用保留字创建了一个驼峰式列!)因此,我必须在表格输出中输入“保留保留字的大小写”并将其键入为“Admin”(不带引号和驼峰式)。

【讨论】:

以上是关于如何通过 Pentaho Data Integration 的 table_output 步骤填充表格?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pentaho Data Integration (Kettle) 中向文件添加行号?

在 Pentaho Data Integration 中为不同的连接复制作业

Pentaho Data Integration (Kettle) 简介

应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(同构数据抽取)

如何在 SQL/PostgreSQL/MySQL 中将“65→67→69”更改为“J7,G2,P9”?还是使用 Pentaho Data Integration (Spoon) 中的拆分字段/值映射器

使用 Pentaho Kettle 实现 SCD Type 2 (Pentaho Data Integration 5.2)