水壶 '?'不工作表输入步骤
Posted
技术标签:
【中文标题】水壶 \'?\'不工作表输入步骤【英文标题】:Kettle '?' not working Table Input Step水壶 '?'不工作表输入步骤 【发布时间】:2013-06-21 19:56:12 【问题描述】:我想从数据库中获取所有表名,然后从表中获取所有行。所以我创建了一个这样的转换:
-
获取表名:添加了数据库连接并将表名存储在名为“tablename”的输出字段中。
表输入:标记为“替换脚本中的变量”和“为每一行执行”。在“从步骤中插入数据”中添加了第一步。 SQL 是“SELECT * from ?”。
我在网上阅读了很多教程,包括documentation。
我的问题是到处都说我是我的“?”应替换为参数。但这不会发生。以下是日志:
2013/06/22 03:33:25 - 获取表名。0 - 开始运行... 2013/06/22 03:33:25 - Postgres 9.1.9 RO - 从数据库元数据中读取:9 个表名。 2013/06/22 03:33:25 - 表 input.0 - 找到查询参数 = [stackexchange2] 2013/06/22 03:33:25 - 表 input.0 - SQL 查询:SELECT * from ? 2013/06/22 03:33:25 - 表 input.0 - 错误(版本 4.4.0-stable,buildguy 从 2012-11-21 16.02.21 构建 17588):意外错误 2013/06/22 03:33:25 - 表 input.0 - 错误(版本 4.4.0-stable,buildguy 从 2012-11-21 16.02.21 构建 17588):org.pentaho.di.core.exception。水壶数据库异常: 2013/06/22 03:33:25 - 表 input.0 - 错误(版本 4.4.0-stable,buildguy 从 2012-11-21 16.02.21 构建 17588):执行 SQL 时发生错误: 2013/06/22 03:33:25 - 表 input.0 - 错误(版本 4.4.0-stable,buildguy 从 2012-11-21 16.02.21 构建 17588):SELECT * from ? 2013/06/22 03:33:25 - 表 input.0 - 错误(版本 4.4.0-stable,buildguy 从 2012-11-21 16.02.21 构建 17588):错误:“$1”处或附近的语法错误 职位:16 2013/06/22 03:33:25 - 表 input.0 - 错误(版本 4.4.0-stable,buildguy 从 2012-11-21 16.02.21 构建 17588):
更新 我只想完成这项工作。我现在正在学习该工具,如果知道如何“?”会很好。作品。
【问题讨论】:
Kettle 是一个面向元数据的 ETL 工具。表元数据在转换初始化期间被初始化。您永远不会编写一种对数据库中的所有表进行操作的转换。您能否详细说明您真正想要实现的目标? 为什么不呢?我正在测试软件。我希望能够遍历所有表格。我的 SQL 语句可能会更改以做一些有意义的事情。但是现在,我正在关注教程,所以这应该可以正常工作吗? 那么浏览表格的最佳方式是什么? 你在学习哪个教程? 你可以看到documentation。下面他们有一个例子,他们展示了“?”工作。 【参考方案1】:为了解决您的情况,我更喜欢使用作业,请查找 kettle_intalation_folder_path/examples/jobs/process all tables/Process all tables.kjb,因为您的案例是该示例的简化。
【讨论】:
我仍然很想知道如何解决这个问题! :) 但这很有帮助!谢谢【参考方案2】:实际上你可以这样做,而且你绝对会这样做。看看“元数据注入”。
您也不能参数化表名 - jdbc 不允许这样做。但是,如果您真的愿意,您可以使用 SQL 步骤而不是表输入并在字段中生成整个 SQL 字符串。不过真的不建议这样做。
如上所述,请进一步准确描述您要做什么。如果您只是迁移数据库而不对数据进行任何转换,即从一个数据库到另一个数据库,那么不要打扰 Kettle,因为这不是它的用途。
【讨论】:
您好,感谢您的回答。不,我没有迁移数据库。 Kettle 有一个非常简单的向导。如果您看到日志,“找到的查询参数 = [stackexchange2]”。 'stackexchange2' 是表名。我显然明白了,它正在传递到下一步。即使我将 SQL 语句更改为其他内容,例如“select * from stackexchange2 where ?”,它仍然没有替换'?'。 按照documentation应该是可以的。 err,你能附上你的表格输入步骤的屏幕截图吗? 我需要至少 10 个代表来发布图片。反正没关系,表格输入步骤很简单。我已经在我的问题中描述了它 是的,它有效。那么您是否输入了“从上一步插入”下拉菜单?并且您是否正确选择了上一步的名称?这一切正常,我每天都在使用它,所以你的问题是两件事之一,要么你的步骤配置错误,要么流中的某些东西有问题。以上是关于水壶 '?'不工作表输入步骤的主要内容,如果未能解决你的问题,请参考以下文章