我有一个数据库,其中包含一些应用程序设置表,用户,部门,城市等列表。我想要那些表的结构和数据。因此,如果我得到一个新用户,备份将保存它。
但是也有一些历史数据和计算数据的数据,这些数据来自其他来源,只能工作一段时间然后到期,因此备份数据将是一种浪费。但是需要具有结构,因此恢复将创建需要它的表用于应用程序。
现在我正在使用此命令,但这会保存所有表格和所有数据。
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选项适用于表和模式。如何指定是否要保存函数代码?
答案 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"