Ubuntu 上 pgAdmin 导入数据失败排查与修复
一、先快速定位问题
sudo systemctl status postgresql,必要时 sudo systemctl start postgresql;sudo ufw allow 5432/tcp,并确认云服务器安全组策略允许 5432。二、常见报错与对应修复
Utility file not found. Please correct the Binary Path in the Preferences dialog
原因:pgAdmin 找不到 psql 等工具。修复:在 pgAdmin 菜单 File → Preferences → Paths → Binary paths → PostgreSQL Binary Path,设置为 PostgreSQL 的 bin 目录(如 /usr/lib/postgresql/14/bin)。
权限被拒绝、连接被拒绝
原因:数据库未启动、或 pg_hba.conf 未允许来源 IP、或密码错误。修复:
sudo systemctl start postgresql;host all all 0.0.0.0/0 md5),并在 postgresql.conf 中设置 listen_addresses='*';sudo systemctl restart postgresql;psql -h 127.0.0.1 -U <用户> -d <库名> -c "select 1"。跨版本导入 .dmp 报错:unsupported version in file header
原因:用 pg_dump -Fc 生成的自定义二进制备份与低版本 pg_restore 不兼容。修复:
pg_dump -h <host> -U <user> <db> > backup.sql;psql -U <user> -d <db> < backup.sql。文件不存在或权限不足(COPY 路径问题)
原因:pgAdmin 向导默认在服务器上执行 COPY,需服务器可访问的文件路径。修复:
数据格式不匹配、编码问题
原因:CSV 列顺序/类型与表不一致、分隔符/引号/转义设置不当、编码非 UTF-8。修复:
NULL '\\N'、ENCODING 'UTF8';三、更稳妥的导入方式与命令示例
服务器侧导入(推荐,避免本机路径与权限问题)
COPY mytable FROM '/tmp/data.csv' WITH (FORMAT csv, HEADER, DELIMITER ',', NULL '\\N', ENCODING 'UTF8');COPY mytable FROM '/tmp/data.csv' WITH (FORMAT csv, DELIMITER ',', NULL '\\N', ENCODING 'UTF8');pg_dump -h <host> -U <user> -F c <db> > backup.dumppg_restore -h <host> -U <user> -d <db> backup.dumppg_dump -h <host> -U <user> <db> > backup.sqlpsql -U <user> -d <db> < backup.sql本地侧导入(pgAdmin 向导)
四、仍未解决时请准备这些信息以便进一步排查
psql --version 与 SELECT version();