跳到主要内容

导入数据

CloudBase PostgreSQL 可以通过 DMC、SQL 脚本、PostgreSQL 工具或业务程序导入数据。选择方式时,需要考虑数据量、停机窗口、索引影响和回滚方案。

导入方式

方式适用场景
DMC 导入导出少量表数据、开发测试、人工操作
SQL 文件初始化表结构、种子数据、可审计变更
pg_dump / pg_restore从已有 PostgreSQL 迁移
业务脚本批量写入需要清洗、转换或调用外部接口的数据

导入前检查

导入前建议确认:

  • 目标库 PostgreSQL 版本和扩展能力满足源库需求。
  • 表结构、主键、外键、唯一约束和默认值已经准备好。
  • RLS 策略不会阻止导入账号写入数据。
  • 大表导入期间的索引、触发器和外键检查成本可接受。
  • 已准备回滚方案,例如备份、临时表或可重复执行脚本。

使用 DMC 导入

DMC 适合导入 CSV、SQL 等文件,或在开发阶段做少量数据迁移。入口可参考 DMC 数据库管理

导入后建议执行抽样检查:

select count(*) from public.orders;
select * from public.orders order by created_at desc limit 10;

使用 SQL 初始化

对于项目初始化数据,推荐将建表、索引、扩展和种子数据整理为 SQL 文件,便于代码评审和环境复现。

begin;

create table if not exists public.categories (
id bigint generated by default as identity primary key,
name text not null unique
);

insert into public.categories (name)
values ('default')
on conflict (name) do nothing;

commit;

从 PostgreSQL 迁移

从已有 PostgreSQL 迁移时,可以使用 pg_dump 导出,再使用 pg_restorepsql 导入。

pg_dump "$SOURCE_DATABASE_URL" \
--format=custom \
--no-owner \
--file=backup.dump

pg_restore \
--dbname="$TARGET_DATABASE_URL" \
--no-owner \
--clean \
--if-exists \
backup.dump

如果只迁移部分表,可以使用 --table 指定范围。生产迁移前应先在测试环境演练完整流程。

大数据量导入建议

  • 分批导入,避免单个事务过大。
  • 导入前评估是否临时禁用非必要索引或触发器。
  • 导入后执行 analyze 更新统计信息。
  • 对重要表做行数、主键范围、金额汇总等校验。
  • 在低峰期操作,并保留源数据直到验证完成。
analyze public.orders;

导入后的权限检查

数据导入完成后,应验证普通用户是否只能访问授权数据。

select count(*)
from public.orders
where user_id is null;

如果表启用了 RLS,需要确认导入数据中的归属字段与策略一致。权限策略配置请参考 基础权限