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

时间:2020-09-28 18:38:16

标签: pentaho kettle

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

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

Kitchen.bat /文件:“ C:\ pentaho-8-1 \ Dev_Repo \ home \ jobs \ MainProcess \ MasterJob.kjb” / level:基本/日志文件:“ C:\ pentaho-8-1 \ logs \ my-job.txt”

此操作因错误而失败(.ktr不是文件或未定义存储库) withimportedroot

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

withmodifiedroot

1 个答案:

答案 0 :(得分:1)

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

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

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

对于转换文件名,一个好的文本搜索和替换工具可以一次性解决大多数转换问题。包含一些XML标记以防止替换过多。