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

How to populated the table via Pentaho Data Integration's table_output step?

我正在通过 Pentaho 7.1 执行 ETL 作业。 工作是通过 Pentaho Jobs and transformations?

在 PostgreSQL 9.2 中填充 table 'PRO_T_TICKETS'

我已将 table 字段映射到流字段

Mapped Fields

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

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

但我希望仅在 table PRO_T_TICKETS 中上传此数据,并尽可能使用大写模式。

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

你觉得我应该怎么做?

当您创建(或修改)连接时,select Advanced 在左侧面板上单击 Force to upper caseForce to lower case 或者,更好的是,Preserve case of reserved words.

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

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

作为补充:遵循 A​​lainD 的提示并使用我想与您分享的特定配置,它对我有用。我使用 Table 输入和输出将数据从 MySQL 转换为 PostgreSQL。在两个数据库中,我都有大写对象。

我按照以下步骤以正确的方式工作:

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

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