应该可以使用 -T 的选择 pg_dump的 :
-T
-T table --exclude-table= table 不要转储任何匹配的表 table 图案。
-T table
--exclude-table= table
table
该 psql 文档有关于这些模式的详细信息
psql
在一个模式中, * 匹配任何字符序列(包括没有字符)和 ? 匹配任何单个字符。 (这种表示法与Unix shell文件名模式相当。)例如, \dt int* 显示名称以...开头的表 int 。但在双引号内, * 和 ? 失去这些特殊的意义,只是字面上匹配。 包含点的图案( . )被解释为模式名称模式,后跟对象名称模式。例如, \dt foo*.*bar* 显示表名包含的所有表 bar 在模式名称以其开头的模式中 foo 。如果没有出现点,则该模式仅匹配当前架构搜索路径中可见的对象。同样,双引号内的一个点失去了它的特殊含义,并且字面上匹配。 例如,高级用户可以使用正则表达式表示法,例如字符类 [0-9] 匹配任何数字。所有正则表达式特殊字符的工作方式均符合 第9.7.3节 , 除了 . 如上所述,它被视为分隔符, * 这被翻译成正则表达式表示法 .* , ? 这被翻译成 . ,和 $ 字面上匹配。您可以通过编写模拟这些模式字符 ? 对于 . , (R+|) 对于 R* , 要么 (R|) 对于 R? 。 $ 不需要作为正则表达式字符,因为模式必须匹配整个名称,这与正则表达式的通常解释不同(换句话说, $ 自动附加到您的模式)。写 * 如果您不希望锚定模式,请在开头和/或结尾处。请注意,在双引号内,所有正则表达式特殊字符都会失去其特殊含义并按字面匹配。
在一个模式中, * 匹配任何字符序列(包括没有字符)和 ? 匹配任何单个字符。 (这种表示法与Unix shell文件名模式相当。)例如, \dt int* 显示名称以...开头的表 int 。但在双引号内, * 和 ? 失去这些特殊的意义,只是字面上匹配。
*
?
\dt int*
int
包含点的图案( . )被解释为模式名称模式,后跟对象名称模式。例如, \dt foo*.*bar* 显示表名包含的所有表 bar 在模式名称以其开头的模式中 foo 。如果没有出现点,则该模式仅匹配当前架构搜索路径中可见的对象。同样,双引号内的一个点失去了它的特殊含义,并且字面上匹配。
.
\dt foo*.*bar*
bar
foo
例如,高级用户可以使用正则表达式表示法,例如字符类 [0-9] 匹配任何数字。所有正则表达式特殊字符的工作方式均符合 第9.7.3节 , 除了 . 如上所述,它被视为分隔符, * 这被翻译成正则表达式表示法 .* , ? 这被翻译成 . ,和 $ 字面上匹配。您可以通过编写模拟这些模式字符 ? 对于 . , (R+|) 对于 R* , 要么 (R|) 对于 R? 。 $ 不需要作为正则表达式字符,因为模式必须匹配整个名称,这与正则表达式的通常解释不同(换句话说, $ 自动附加到您的模式)。写 * 如果您不希望锚定模式,请在开头和/或结尾处。请注意,在双引号内,所有正则表达式特殊字符都会失去其特殊含义并按字面匹配。
[0-9]
.*
$
(R+|)
R*
(R|)
R?