将Postgres pg_dump文件与Flyway一起使用时的幂等性和外键约束



我正在尝试将一些pg_dump生成的迁移脚本与Flyway一起使用。第一个迁移脚本仅用于架构。其他迁移脚本使用Postgres COPY命令将种子数据加载到各种表中。这些种子数据脚本将作为Flyway可重复迁移脚本存在。此设置存在两个问题。

  • 当Flyway从迁移脚本加载种子数据时,我会遇到外键约束冲突,因为我没有按正确的顺序对各种表进行种子设置。有大量的表需要处理,所以有没有一种简单的方法来解决这个问题,这样我就不必重新排序我的COPY了
  • 由于种子数据将在可重复的迁移脚本中,因此这些脚本需要是幂等的。有没有一种方法可以用Postgres COPY命令做到这一点?我尽量避免将其转换为INSERT,因为这会影响性能,也会使我的迁移文件变得巨大

这里的幂等性技巧是按照正确的依赖顺序从文件中删除数据,当你这样做时,同样按照正确的依存顺序加载数据。删除数据的正确依赖顺序是通过获得每个外键约束的目标表来确定的,并确保当表是数据尚未删除的表的目标时,不会删除表中的任何数据。这个按依赖顺序排列的表列表通常被称为"清单",CREATE语句和PgSQL COPY也需要它。基于公共域PowerShell的Flyway Teamworks框架将为您创建清单。

相关内容

最新更新