2

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

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

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

任何帮助,将不胜感激。

谢谢你的时间。

PS:我不确定stackoverflow是否是解决这类问题的最佳场所,如果不是,请随时推荐任何有趣的论坛。

4

1 回答 1

1

解决方案一: 假设你指的是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) 您刚刚从数据库中生成的文件。您可以使用文件比较步骤来执行此操作:

示例 - PDI

我希望这能有所帮助。

编辑:

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

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

于 2015-08-28T15:51:59.597 回答