首页 > 解决方案 > Pentaho - 从数据库存储库迁移到文件存储库

问题描述

我正在将 Pentaho 从数据库存储库迁移到文件存储库。我已经将数据库存储库导出到 xml 文件中,然后创建了一个文件存储库并导入了存储库...导入后我看到的第一个问题是我的所有数据库连接都存储在 .ktr 和 .kjb 文件中,这将是一个大问题 如果我更新一个连接字符串,比如更新密码,我有数百个子转换和作业,我是否必须在所有这些文件中更新它?有什么方法可以忽略存储在 .ktr 和 .kjb 文件中的密码和其他连接设置,而是使用存储库连接或在 .kettle 属性中指定它?

我面临的另一个问题是当我尝试在 cmd 中通过厨房运行主作业时,它无法识别子转换和作业。但是,当我将转换根更改为 ${Internal.Entry.Current.Directory} - 子转换正在被识别和处理 - 正如我提到的,我有 100 多个子转换和作业 - 有没有办法更新这个根一次完成所有工作和转型。

Kitchen.bat /file:"C:\pentaho-8-1\Dev_Repo\home\jobs\MainProcess\MasterJob.kjb" /level:Basic /logfile:"C:\pentaho-8-1\logs\my-job 。文本”

这失败并出现错误(.ktr 不是文件或未定义存储库) 带进口根

但是,当我将根目录更改为 ${Internal.Entry.Current.Directory} 时,它可以工作!

带修改根

标签: pentahokettle

解决方案


对于数据库连接,您可以在存储库中创建 .kdbs 并为所有属性(主机、端口、模式、用户等)输入变量,并在kettle.properties 或其他属性文件中定义它们。

这就像一个更方便的 JNDI 文件版本,每个环境有一个属性文件。您可以通过在 Spoon 客户端中打开水壶属性轻松检查当前值(不要编辑它们,否则会弄乱布局!),您还可以将水壶“加密”密码放入属性文件中。

PDI 仍会将连接的副本保存到所有 .kjb 和 ktr 文件中(理论上应该在打开它们时从 .kdb 或 shared.xml 更新它们)但因为内容只是通用变量名(${STAGING_DB_HOST} 等)你几乎永远不会遇到这个问题。

对于转换文件名,一个好的文本搜索和替换工具应该可以一次性修复大部分转换。包括一些 XML 标签以防止替换过多。


推荐阅读