我们目前正在开发一个项目,我们需要检查每次启动Spoon作业时数据库架构是否已更改,因为我们的源是第三方数据库,我们几乎无法控制。
对我们来说最明显的解决方案是创建一个脚本,调用像apgdiff这样的工具,然后将模式与先前生成的模式文件进行比较。如果有任何变化,我们会发送通知。
问题基本上是:这是实现这一目标的最佳方法吗?
任何帮助都将不胜感激。
感谢您的时间。
P.S。:我不确定stackoverflow是否是这类问题的最佳位置,如果没有,请随时提出任何有趣的论坛。
答案 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)刚从数据库中生成的文件。您可以使用文件比较步骤执行此操作:
我希望这有点帮助。
修改强>
解决方案II: 您可以应用的另一种解决方案:您还可以使用表格比较步骤(由www.kjube.de提供)来比较来自不同来源的两个表格。
这一步的好处是你可以为你要比较的两个表指定两个不同的连接。