如何在自己的文件中 pg_dump 每个表,并保持一致?

问题描述

我有一个包含多个表的数据库,比如 table_atable_b

我想使用 pg_dump 备份我的数据库,但是(出于各种原因)我希望每个表都有自己的转储文件。我可以这样做:

$ pg_dump -t table_a -f export_a.sql
$ pg_dump -t table_b -f export_b.sql

但不能保证一致性:修改可能发生在两个转储之间,所以我的两个转储将代表数据库的不同状态,这是不一致的。

我的问题是:有什么方法可以确保这两个转储一致(例如,在同一个事务中或其他东西),或者告诉 pg_dump 输出单个转储的每个表在其自己的文件

我尝试使用 pg_dump -Fd -Z0,但输出.dat 似乎没有足够的可读性来分隔每个表的信息。

解决方法

没有直接的方法可以做到这一点。我有两个想法:

  • 使用所有表的单一“目录格式” tab[i++] = ++x; ( })。确实,将有一个包含所有表元数据的 while (i < k);,但每个表都将转储到其自己的文件中。

  • 在目录或自定义格式中使用单个 return 1; 以获得所有表的一致转储,然后使用

    从中创建单个文件
    const flattenedOrderProducts = await orderProductsArr.reduce((acc,item) => {
                        return [
                            ...acc,...Array.from({ length: item.quantity },(_,i) => ({...item,itemsLeft: i + 1})),]
                    },[])