水壶 '?'不工作表输入步骤

时间:2013-06-21 19:56:12

标签: pentaho kettle

我想从数据库中获取所有表名,然后从表中获取所有行。所以我创建了这样的转换:

  1. 获取表名:添加数据库连接并将表名存储在名为“tablename”的输出字段中。
  2. 表输入:标记为“替换脚本中的变量”和“每行执行”。添加了“从步骤插入数据”中的第一步。 SQL是“SELECT * from?” 我在线阅读了很多教程,包括documentation 我的问题是,到处都说我是“我的”?应该用参数替换。但这不会发生。以下是日志:

      

    2013/06/22 03:33:25 - 获取表名0 - 开始运行...
      2013/06/22 03:33:25 - Postgres 9.1.9 RO - 读取:来自db元数据的9个表名   2013/06/22 03:33:25 - 表输入0 - 找到的查询参数= [stackexchange2]
      2013/06/22 03:33:25 - 表输入0 - SQL查询:SELECT * from?
      2013/06/22 03:33:25 - 表输入0 - 错误(版本4.4.0-稳定,从2012-11-21 16.02.21由buildguy构建17588):意外错误
      2013/06/22 03:33:25 - 表输入0 - 错误(版本4.4.0-稳定,从2012-11-21 16.02.21由buildguy构建17588):org.pentaho.di.core.exception。 KettleDatabaseException:
      2013/06/22 03:33:25 - 表输入0 - 错误(版本4.4.0-稳定,从2012-11-21 16.02.21由buildguy构建17588):执行SQL时发生错误:
      2013/06/22 03:33:25 - 表输入0 - 错误(版本4.4.0-稳定,从2012-11-21 16.02.21由buildguy构建17588):SELECT * from?
      2013/06/22 03:33:25 - 表输入0 - 错误(版本4.4.0-稳定,从2012-11-21 16.02.21由buildguy构建17588):错误:语法错误在“$ 1”或附近
      职位:16
      2013/06/22 03:33:25 - 表输入0 - 错误(版本4.4.0-稳定,从2012-11-21 16.02.21由buildguy构建17588):

  3.      我正在使用水壶4.4。从here下载了勺子客户端。

    更新
    我只是想做这个工作。我现在正在学习这个工具,知道怎么样会很好吗?作品。

2 个答案:

答案 0 :(得分:2)

为了解决您的情况,我更喜欢使用工作,请查找{kettle_intalation_folder_path} / examples / jobs / process所有表/处理所有tables.kjb,因为您的案例是该示例的简化。

答案 1 :(得分:0)

实际上你可以做到这一点,你绝对会这样做。看一下“元数据注入”。

此外,您无法参数化表名 - jdbc不允许这样做。但是,如果您真的想要,可以使用SQL步骤而不是表输入,并在字段中生成整个SQL字符串。虽然不是真的会推荐。

如上所述,请进一步描述您正在尝试做的事情。如果您只是在不对数据进行任何转换的情况下迁移数据库,即从一个数据库转移到另一个数据库,那么就不要打扰Kettle,因为这不是它的用途。