如何在Ubuntu命令行中导入PostgreSQL数据库
Ubuntu系统PostgreSQL数据库导入失败解决方案
- 权限校验
- 切换到默认postgres系统用户操作,避免权限拦截:
sudo su - postgres - 确认目标数据库已创建,当前数据库角色对其具备读写权限,查看所有数据库命令:
psql -l
- 切换到默认postgres系统用户操作,避免权限拦截:
- 导入文件与命令校验
- 确认导入文件无损坏,且postgres用户具备该文件的读取权限,可先执行赋权操作:
sudo chmod 644 你的导入文件绝对路径 - 匹配正确的导入命令:
- 导入普通.sql格式文件:
psql 目标数据库名称 < 导入文件绝对路径 - 导入pg_dump导出的自定义格式.dump文件:
pg_restore -d 目标数据库名称 导入文件绝对路径
- 导入普通.sql格式文件:
- 确认导入文件无损坏,且postgres用户具备该文件的读取权限,可先执行赋权操作:
- 兼容问题排查
- 确认导出原库的PostgreSQL大版本与当前Ubuntu环境的版本差不超过1个大版本,跨大版本导入易出现兼容报错,查看当前版本命令:
psql --version - 确认导出、导入两端的数据库字符集一致,在psql交互界面可执行以下命令查看字符集配置:
show client_encoding; show server_encoding;
- 确认导出原库的PostgreSQL大版本与当前Ubuntu环境的版本差不超过1个大版本,跨大版本导入易出现兼容报错,查看当前版本命令:
- 常见报错处理
出现
peer authentication failed报错:修改/etc/postgresql/[你的PG版本号]/main/pg_hba.conf配置文件,将本地用户对应的认证规则从peer改为md5,修改完成后重启服务生效:sudo systemctl restart postgresql
出现文件读取permission denied报错:可将导入文件移动到/tmp目录后再次执行导入操作,/tmp目录默认开放所有用户的读取权限。

内容的提问来源于stack exchange,提问作者gary
相关产品推荐
相关产品推荐

