在开始作业之前比较 table 个模式
Compare table schemas before starting a job
我们目前正在进行一个项目,我们需要在每次启动 Spoon 作业时检查数据库架构是否已更改,因为我们的来源是我们几乎无法控制的第三方数据库。
对我们来说最明显的解决方案是创建一个脚本来调用类似 apgdiff 的工具,然后将模式与之前生成的模式文件进行比较。如果有任何变化,我们会发送通知。
问题基本上是:这是实现此目标的最佳方法吗?
如有任何帮助,我们将不胜感激。
感谢您的宝贵时间。
P.S.: 我不确定 Whosebug 是否是解决此类问题的最佳场所,如果不是,请随时推荐任何有趣的论坛。
方案一:
假设它是您所指的 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) 您刚从数据库生成的文件。您可以使用 File Compare 步骤来执行此操作:
希望对您有所帮助。
编辑:
方案二:
您可以应用的另一个解决方案:您还可以使用 Table 比较 步骤(由 www.kjube.de 提供)来比较来自不同来源的两个表。
这一步的好处在于,您可以为要比较的两个表指定两个不同的连接。
我们目前正在进行一个项目,我们需要在每次启动 Spoon 作业时检查数据库架构是否已更改,因为我们的来源是我们几乎无法控制的第三方数据库。
对我们来说最明显的解决方案是创建一个脚本来调用类似 apgdiff 的工具,然后将模式与之前生成的模式文件进行比较。如果有任何变化,我们会发送通知。
问题基本上是:这是实现此目标的最佳方法吗?
如有任何帮助,我们将不胜感激。
感谢您的宝贵时间。
P.S.: 我不确定 Whosebug 是否是解决此类问题的最佳场所,如果不是,请随时推荐任何有趣的论坛。
方案一:
假设它是您所指的 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) 您刚从数据库生成的文件。您可以使用 File Compare 步骤来执行此操作:
希望对您有所帮助。
编辑:
方案二: 您可以应用的另一个解决方案:您还可以使用 Table 比较 步骤(由 www.kjube.de 提供)来比较来自不同来源的两个表。
这一步的好处在于,您可以为要比较的两个表指定两个不同的连接。