在 CentOS 上向 PostgreSQL 导入数据,常见方式有以下几种,按使用频率从高到低给你说明,并附上完整示例。
psql 导入 SQL 文件(最常用 ✅)例如:
/opt/data/init.sql
sudo -i -u postgres
psql -d 数据库名 -f /opt/data/init.sql
示例:
psql -d testdb -f /opt/data/init.sql
✅ 适合:
.sql 备份文件恢复(pg_dump 导出)pg_dump testdb > testdb.sql
psql testdb < testdb.sql
pg_restore 导入(适用于自定义格式)pg_dump -Fc testdb > testdb.dump
pg_restore -d testdb testdb.dump
✅ 优点:
COPY 导入 CSV 文件(大批量数据 ✅)id,name,age
1,Tom,18
2,Jerry,20
CREATE TABLE user_info (
id INT,
name TEXT,
age INT
);
\COPY user_info FROM '/tmp/user_info.csv' CSV HEADER;
⚠ 注意:
/tmp/user_info.csv 必须是 postgres 用户可读\COPY(psql 命令)而不是 SQL COPY,避免权限问题pgAdmin(图形界面)适合:
步骤:
.sql 或 .dump 文件Permission denied
✅ 解决:
chown postgres:postgres 文件名
chmod 600 文件名
database "testdb" does not exist
✅ 解决:
createdb testdb
invalid byte sequence for encoding
✅ 解决:
psql -d testdb --set=client_encoding=UTF8
✅ 备份
pg_dump -Fc testdb > testdb.dump
✅ 恢复
pg_restore -d testdb testdb.dump
如果你愿意,可以告诉我:
我可以给你 最优导入方案 ✅