我经常使用pg_dump来转储数据库并将它们与diff进行比较。为了摆脱大多数“误报”,我想修补pg_dump来对表格进行排序,这样它的转储订单就不会因插入和更改而超出必要的变化。有限公司
所以我正在寻找一个查询,它将返回一个表的属性列表,这些属性是可排序的(例如没有XML字段)并按“唯一性”排序,即i。即表示主键的第一个属性,然后是其他唯一键,然后是其余的。
在深入了解PostgreSQL的系统目录之前,有没有人已经解决了这个问题?
答案 0 :(得分:1)
您可以编写一堆查询,例如:
COPY (SELECT * FROM T ORDER BY ...) INTO t.csv
并将每个表的结果集写入csv文件。它将以集合顺序编写,因此应易于比较。
这比黑客攻击pg_dump容易得多。
您可以使用标准INFORMATION_SCHEMA获取表格的所有列:
select * from information_schema.columns;