在开始作业之前比较表模式

时间:2015-08-18 13:42:47

标签: pentaho pdi

我们目前正在开发一个项目,我们需要检查每次启动Spoon作业时数据库架构是否已更改,因为我们的源是第三方数据库,我们几乎无法控制。

对我们来说最明显的解决方案是创建一个脚本,调用像apgdiff这样的工具,然后将模式与先前生成的模式文件进行比较。如果有任何变化,我们会发送通知。

问题基本上是:这是实现这一目标的最佳方法吗?

任何帮助都将不胜感激。

感谢您的时间。

P.S。:我不确定stackoverflow是否是这类问题的最佳位置,如果没有,请随时提出任何有趣的论坛。

1 个答案:

答案 0 :(得分:1)

解决方案I: 假设它是你所指的PostgreSQL数据库,如果你有INFORMATION_SCHEMA的足够权限,我建议你像这样查询数据库:

select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS where table_name = '<name of table>';

以您提到的方式持久存储预期结果,然后仅比较子转换中的结果。持久模式可以是CSV文件,存储定义如下:

app_id           character varying           255                      
platform         character varying           255                      
etl_tstamp       timestamp without time zone (null)                   
collector_tstamp timestamp without time zone (null)                   
dvce_tstamp      timestamp without time zone (null)                   
event            character varying           128                      
event_id         character                   36                       

然后只需比较两个文件:(1)包含预期模式定义的文件和(2)刚从数据库中生成的文件。您可以使用文件比较步骤执行此操作:

Example - PDI

我希望这有点帮助。

修改

解决方案II: 您可以应用的另一种解决方案:您还可以使用表格比较步骤(由www.kjube.de提供)来比较来自不同来源的两个表格。

这一步的好处是你可以为你要比较的两个表指定两个不同的连接。