使用pgAdmin4恢复.sql文件报错:文本格式转储需用psql处理
解决pgAdmin4恢复.sql文件时的pg_restore错误
嘿,这个问题我碰过好多次了,咱们一步步把它捋明白:
首先,报错的核心原因是PostgreSQL的两种备份格式搞的鬼——这俩格式对应的恢复工具完全不一样:
- 文本格式dump(通常存为.sql):本质就是一堆纯SQL语句的集合,比如CREATE TABLE、INSERT这类命令,只能用
psql来执行导入,根本不是pg_restore的处理对象。 - 归档/自定义格式备份:这种是二进制格式(比如后缀为.dmp、.backup),才是
pg_restore专门负责的,它支持更灵活的恢复操作(比如只恢复某张表、跳过某些数据)。
你遇到的情况就是:这个.sql文件实际是文本格式的dump,后缀名只是个标识,不代表文件的真实格式,所以pg_restore识别不了才会提示你换psql,完全正常~
不用转换格式!直接用psql导入就行
方法1:用pgAdmin4的GUI操作
- 打开pgAdmin4,连接到你要恢复数据的目标数据库
- 在左侧导航栏右键点击目标数据库,选择 Query Tool(查询工具)
- 在Query Tool的工具栏里,点击那个像文件夹的 Open File 按钮
- 选中你的.sql文件,点击打开
- 点击工具栏上的▶️ Execute 按钮,等着SQL语句执行完就搞定了
方法2:用命令行(psql命令)
如果你习惯用终端,直接跑这条命令就行:
psql -U 你的数据库用户名 -d 目标数据库名称 -f /你的文件路径/文件名.sql
执行时输入用户密码,等着命令跑完就完成导入了。
额外小提示
要是以后你想生成适合pg_restore的备份文件,用pg_dump的时候加个-Fc参数指定自定义格式就行:
pg_dump -U 用户名 -d 要备份的数据库名 -Fc -o /备份文件保存路径/备份文件.dmp
这样生成的文件就能用pg_restore正常恢复啦。
内容的提问来源于stack exchange,提问作者user1554264
相关产品推荐
相关产品推荐

