掌握在 PostgreSQL 中创建新数据库的标准流程
学会使用 pg_restore 命令行工具备份文件还原数据库
熟悉 DVD Rental 示例数据库的实体关系模型(ER Model)与表结构
能够独立验证数据库加载结果并浏览元数据
在开始加载数据库之前,请确保您的开发环境已满足以下两个必要条件:
PostgreSQL 服务已安装并运行:确认数据库服务器已在本地或远程主机上正常启动。
拥有示例数据库备份文件:本教程将使用经典的 "DVD Rental"(DVD 租赁)示例数据库。该数据库模拟了一家 DVD 租赁店的业务场景,是学习 PostgreSQL 的最佳实践素材之一。
示例数据库
DVD Rental 数据库包含了一个完整的零售业务模型,其内部对象结构如下:
15 张数据表:涵盖演员、电影、库存、租赁、支付等核心业务实体
1 个触发器:用于自动化业务逻辑
8 个存储函数:封装复杂计算逻辑
1 个域(Domain):定义自定义数据约束
7 个视图:提供简化的数据查询接口
13 个序列:用于主键自增生成
核心数据表说明
该数据库的 15 张表及其功能描述如下:
首先,我们需要在 PostgreSQL 服务器中创建一个空的数据库容器来接收数据。
打开终端(Linux/macOS)或命令提示符(Windows),输入 psql 命令进入 SQL 交互 shell。
系统会提示您输入连接信息,通常默认配置如下:
Server [localhost]: localhost
Database [postgres]: postgres
Port [5432]: 5432
Username [postgres]: postgres
Password for user postgres: [输入您的密码]成功登录后,使用 CREATE DATABASE 语句创建名为 dvdrental 的新数据库:
CREATE DATABASE dvdrental;注意:可以使用
Navicat命令列界面创建

执行成功后,您将收到 CREATE DATABASE 的确认消息。此时请勿退出 shell,或者记下连接参数以便下一步使用。
PostgreSQL 提供了强大的命令行工具 pg_restore,专门用于从归档文件格式(如 custom, directory, tar 格式)还原数据库。
定位备份文件:假设您已将下载的 dvdrental.tar 文件保存在 C:\users\sample_database\ 目录下(Windows 示例)。
进入 bin 目录:打开新的命令提示符窗口,导航至 PostgreSQL 安装目录下的 bin 文件夹。
Windows 典型路径:C:\Program Files\PostgreSQL\14\bin
Linux/macOS 通常已将 pg_restore 加入环境变量,可直接使用。
使用以下命令格式将数据导入刚才创建的 dvdrental 数据库:
pg_restore -U postgres -d dvdrental C:\users\sample_database\dvdrental.tar注意:由于我们 PostgreSQL 是部署在容器中的,需要配合 Docker 容器相关命令操作
上传案例数据库到 Linux
复制案例数据库到容器
docker cp ./dvdrental.tar postgres:/
执行还原命令
docker exec -it postgres pg_restore -U postgres -d dvdrental /dvdrental.tar

参数解析:
-U postgres:指定使用 postgres 超级用户身份进行连接。
-d dvdrental:指定目标数据库名称为 dvdrental。
C:\...\dvdrental.tar:备份文件的绝对路径。
执行命令后,系统会提示您输入 postgres 用户的密码。
输入正确密码后,工具将开始读取归档文件并重建表结构、插入数据、创建函数和视图。
注意:如果备份文件是在不同版本的 PostgreSQL 上创建的,可能会看到一些关于版本不匹配的警告,通常可以忽略,除非出现严重错误。
数据加载完成后,必须验证对象是否已正确导入。
在 psql 命令行工具中,使用元命令 \c (connect) 切换到 dvdrental 数据库:
\c dvdrental系统应返回提示:You are now connected to database "dvdrental" as user "postgres".
使用元命令 \dt 列出当前数据库中的所有表:
\dt预期输出示例
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+----------
public | actor | table | postgres
public | address | table | postgres
public | category | table | postgres
public | city | table | postgres
public | country | table | postgres
public | customer | table | postgres
public | film | table | postgres
public | film_actor | table | postgres
public | film_category| table | postgres
public | inventory | table | postgres
public | language | table | postgres
public | payment | table | postgres
public | rental | table | postgres
public | staff | table | postgres
public | store | table | postgres
(15 rows)如果您能看到上述 15 张表,说明数据库已成功加载。您还可以尝试查询一张表的内容来进一步验证,例如:
SELECT first_name, last_name FROM actor LIMIT 5;环境准备:加载数据库前需确保服务运行正常且拥有合法的备份文件(如 .tar 格式)。
创建容器:必须先使用 CREATE DATABASE 创建空数据库,pg_restore 不会自动创建目标数据库(除非使用 -C 参数)。
工具使用:pg_restore 是处理非纯文本备份文件的首选工具,支持灵活指定用户、数据库和文件路径。
验证流程:通过 \c 切换上下文,利用 \dt 检查表结构,并通过简单的 SELECT 查询确认数据完整性。