温馨提示×

PostgreSQL在CentOS怎么导入数据

小樊
74
2026-07-09 17:35:45
栏目: 云计算

CentOS 上向 PostgreSQL 导入数据,常见方式有以下几种,按使用频率从高到低给你说明,并附上完整示例。


一、使用 psql 导入 SQL 文件(最常用 ✅)

1️⃣ 准备 SQL 文件

例如:

/opt/data/init.sql

2️⃣ 切换到 postgres 用户

sudo -i -u postgres

3️⃣ 导入 SQL 文件

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 文件(大批量数据 ✅)

1️⃣ 准备 CSV

id,name,age
1,Tom,18
2,Jerry,20

2️⃣ 创建表

CREATE TABLE user_info (
  id INT,
  name TEXT,
  age INT
);

3️⃣ 使用 COPY 导入

\COPY user_info FROM '/tmp/user_info.csv' CSV HEADER;

⚠ 注意:

  • /tmp/user_info.csv 必须是 postgres 用户可读
  • 使用 \COPY(psql 命令)而不是 SQL COPY,避免权限问题

五、使用 pgAdmin(图形界面)

适合:

  • 新手
  • 小数据量
  • 可视化操作

步骤:

  1. 打开 pgAdmin
  2. 连接服务器
  3. 右键数据库 → Restore
  4. 选择 .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

如果你愿意,可以告诉我:

  • PostgreSQL 版本
  • CentOS 版本
  • 数据格式(SQL / CSV / dump)
  • 数据量大小

我可以给你 最优导入方案

0