一尘不染

Postgres pg_dump每次都以不同的顺序转储数据库

linux

我正在编写一个PHP脚本(它也使用linux bash命令),将通过执行以下操作在测试用例中运行:

我正在使用PostgreSQL数据库(8.4.2)…

1.)创建一个数据库2.)修改数据库3.)存储数据库的数据库转储(pg_dump)

4.)通过执行步骤1.)和2.),进行回归测试,然后进行另一个数据库转储,并将其(diff)与步骤3.)中的原始数据库转储进行比较。

但是,我发现pg_dump不会总是以相同的方式转储数据库。每次都会以不同的顺序转储事物。因此,当我对两个数据库转储进行比较时,比较将导致两个文件实际上是相同的,只是顺序不同而不同。

我可以采用其他方法来进行pg_dump吗?

谢谢!


阅读 300

收藏
2020-06-07

共1个答案

一尘不染

强制pg_dump以任何特定顺序转储数据是不可能的,因为它以磁盘顺序转储数据-这种方式要快得多。

您可以对pg_dump使用“ -a
-d”选项,然后对输出进行“排序”,但是数据中的换行符将使排序后的输出不可用。但是对于基本的比较,无论有什么变化,都足够。

2020-06-07