Pentaho - 从数据库存储库迁移到文件存储库

Pentaho - Migrating from Database repository to File Repository

我正在将 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.txt"

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

然而,当我将根目录更改为 ${Internal.Entry.Current.Directory} 时,它起作用了!

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

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

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

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