---
title: 备份数据库
description: "建议在卸载数据库之前备份数据库数据，以防止数据丢失。请根据实际需要备份数据库。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/PostgreSQL/kunpengpostgresql_03_0014.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/PostgreSQL/kunpengpostgresql_03_0014.html
indexId: 272b367a7543b0f13e2b3075d2feb3edf1eca1110dd8fa125459a95ce586815479
---
# 备份数据库

建议在卸载数据库之前备份数据库数据，以防止数据丢失。请根据实际需要备份数据库。

#### 基本命令

pg_dump是一个用于备份PostgreSQL数据库的工具。它甚至可以在数据库正在并发使用时进行完整一致的备份，而不会阻塞其它用户对数据库的访问。

该工具生成的转储格式可以分为以下两种格式：

- 脚本格式：是包含许多SQL命令的纯文本格式，这些SQL命令可以用于重建该数据库并将之恢复到生成此脚本时的状态，该操作需要使用psql来完成。
- 归档格式：如果需要重建数据库就必须和pg_restore工具一起使用。在重建过程中，可以对恢复的对象进行选择，甚至可以在恢复之前对需要恢复的条目进行重新排序。

基本命令的使用方式如下：

```
pg_dump [option...] [dbname]
pg_dump -h <主机> -p <端口> -U<用户名> -W<密码>-d <数据库> -f /路径/文件名.sql
```

| 命令参数 | 说明 |
| --- | --- |
| \-h | 指定PostgreSQL连接数据库服务器IP地址。 |
| \-p | 指定连接数据库端口。 |
| \-U | 指定数据库用户。 |
| \-W | 输入数据库密码。 |
| \-d | 指定数据库名称。如果没有提供数据库名字，那么使用PGDATABASE环境变量的数值。 |
| \-f | 指定输出到文件名。 |
| \-F | 指定转储格式，默认为脚本格式。 |


备份数据完成后，可以通过psql恢复数据。


#### 举例

- 路径根据数据库软件安装实际路径为准，本章以路径“/usr/local/pgsql”为例。
- 数据库名，以实际要备份的数据库名字为准，本章以postgres为例。


1. 只导出postgres数据库的数据（-s表示不包括数据模式 ）。该命令在root用户下执行。
  1 /usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql -s postgres

2. 导出postgres数据库（包括数据）。该命令在root用户下执行。
  1 /usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql postgres

3. 导出postgres数据库中表table01的数据。
  创建表table01。该命令在登录数据库后执行：

  1 postgres=create table "table01" ("Name" varchar(255));

  以下命令在root用户下执行：

```
/usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql -t table01 postgres
```


4. 导出postgres数据库中表table01的数据，以insert语句形式保存。
  1 /usr/local/pgsql/bin/pg_dump -U postgres -f /postgres.sql -t table01 --column-inserts postgres

5. 恢复数据到bk01数据库。其中bk01为已创建完毕的数据库。
  1 /usr/local/pgsql/bin/psql -U postgres -f /postgres.sql bk01
