比较表以确保 postgresql 中的非回归

Compare tables to ensure non regression in postgresql

这是我的问题:我经常需要在一些 ETL 代码重构之间比较相同的 postgresql tables(或依赖于它的视图)以检查我的开发中的非回归。

假设我有一个要重构的 ETL 代码,它会定期在 table 中上传数据。目前,一旦我的修改完成,我通常首先从 postgresql 下载我的数据作为 .csv 文件,然后清空它,使用我的重构代码再次填充它,然后再次下载数据。然后,我在 Jupyter Notebook 中使用 Python 比较 .csv 文件。

这似乎根本不是要走的路。值得注意的是,假设我是唯一一个在手术期间使用 table 的人,还有很多其他东西我无法在这里一一列举。

还有更好的方法吗?

在我看来你的方法是正确的。 CSV 导出操作没有什么神奇之处:无论您使用什么工具,运行 都是一个查询并将其结果集格式化到文件中。任何其他 before-and-after 比较操作都必须 运行 相同的查询。

如果您在活动数据库上进行此类回归测试,明智的做法是在您的测试记录上放置某种独特的标签,可以在您的客户名称前加上 ETLTEST-,因此它是 ETLTEST-John Bull。然后你可以让你的查询只处理你的测试记录。并确保为 ORDER BY 做一些可靠的事情。

Juptyer 似乎是一种比较复杂的 csv 文件差异化方法。大多数操作系统都有轻量级快速 difftools。