Postgresql:备份所有表结构但只有几个数据表

时间:2014-07-01 18:40:54

标签: postgresql database-backups pg-dump

我有一个数据库,其中包含一些应用程序设置表,用户,部门,城市等列表。我想要那些表的结构和数据。因此,如果我得到一个新用户,备份将保存它。

但是也有一些历史数据和计算数据的数据,这些数据来自其他来源,只能工作一段时间然后到期,因此备份数据将是一种浪费。但是需要具有结构,因此恢复将创建需要它的表用于应用程序。

现在我正在使用此命令,但这会保存所有表格和所有数据。

pg_dump -U "postgres" -h "local" -p "5432" 
        -d dbName -F c -b -v -f c:\uti\backup.dmp

我还有2个关于pg_dump的问题。

A)docs说选项-b用于blob数据。我有非常大的表,但我想这个选项只适用于带有BLOB字段的表,所以我的备份不应该有任何区别,因为我没有那些字段?。

B)我看到pg_dump选项适用于表和模式。如何指定是否要保存函数代码?

2 个答案:

答案 0 :(得分:15)

排除您不想备份的表格

pg_dump -U "postgres" -h "local" -p "5432" 
        -d dbName -F c -b -v -f c:\uti\backup.dmp
        --exclude-table-data '*.table_name_pattern_*'
        --exclude-table-data 'some_schema.another_*_pattern_*'

函数创建代码是架构的一部分。

答案 1 :(得分:0)

Clodoaldo Neto's 是最佳选择。但是,当使用带有大写字母的 pg_dump 时,我目睹了一种奇怪的行为。该问题还描述了here

所以在我的例子中,要忽略的表被命名为 ChangeHistory,忽略它的技巧是通配符大写字母如下

pg_dump [omitted for brievity] --exclude-table "*hange*istory"