【问题标题】:Dynamic Table name generation results in "Table Not found"动态表名称生成导致“找不到表”
【发布时间】:2021-10-26 20:39:11
【问题描述】:

使用 Pentaho 和 Spoon。我有一个变换的组合,

  1. 创建一个新的表名变量 (TABLENAME)

在单独的转换中,我尝试使用此表名

  1. 第一步创建列名列表(生成行步骤)
  2. 第二步使用这些表行和上一个转换中的表名(表输出步骤)

当我单击表输出步骤上的 SQL 按钮时,它会返回正确的创建表语句。 (虽然它不会替换占位符,但它确实返回一个 CREATE TABLE....)

当我尝试在线运行这两个转换时,它抱怨我生成的名称的表不存在。当 sql 按钮返回 CREATE 时,它似乎必须尝试插入到这个生成的表中。

如何让 pentaho 创建一个将生成的名称存储在变量中的表?

【问题讨论】:

    标签: pentaho pentaho-spoon pdi


    【解决方案1】:

    Table Output 步骤不会创建表,SQL 按钮就像一个帮助按钮,它只允许您复制 DML 以创建表并将其粘贴到您想要运行它的任何位置,但该步骤不会'不运行创建表顺序。

    在插入表格之前,您需要一个单独的转换或作业来创建表格。对于作业,有一个运行 SQL 语句的操作,一个类似的转换步骤。

    【讨论】:

    • 谢谢。这有帮助!我觉得这些类型的 DDL 活动没有内置到产品中,这很烦人也很沮丧,但我会接受它的本来面目。
    • 嗯,他们添加了按钮作为帮助,但是 Pentaho 它并不特定于任何数据库,所以生成的 DDL 非常基本,每个数据库都有特定的命令来微调表的管理,索引的创建、序列等,因此提供的 DDL 只是正确数据库管理的起点
    • 此外,每次运行转换时创建表并不常见,通常是在开发过程中创建一次表,然后每次运行转换时向表中添加数据,或者在添加此执行的信息之前截断表。在某些情况下,每次运行转换时创建临时表是有效的,但是一旦不需要它们,您将需要一个单独的逻辑来删除这些表,或者您可能希望在 Pentaho 中创建和记录数据模型,所以这个转换只需要运行一次。
    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多