如何将Supabase仅public schema数据复制到本地PostgreSQL数据库?
从Supabase复制public schema到本地PostgreSQL的可行方案
方案一:用PostgreSQL原生工具pg_dump + psql
这是最直接可靠的方式,无需第三方工具:
- 从Supabase控制台获取数据库连接信息:进入项目后,到
Settings > Database,复制Host、Port、Database名称、User和Password - 执行导出命令(本地或远程终端均可):
参数说明:pg_dump -h <supabase-host> -p <port> -U <db-user> -d <db-name> -n public -F c -f supabase_public.dump-n public:仅导出public schema-F c:使用自定义压缩格式,节省空间且恢复效率高-f:指定导出文件的路径和名称
- 本地恢复:
- 确保本地已创建目标数据库(无则执行
createdb <local-db-name>创建) - 执行恢复命令:
若本地数据库无public schema,先执行pg_restore -h localhost -p 5432 -U <local-db-user> -d <local-db-name> -n public supabase_public.dumpCREATE SCHEMA public;再恢复 - 确保本地已创建目标数据库(无则执行
方案二:通过Supabase控制台备份后筛选恢复
如果习惯GUI操作:
- 登录Supabase控制台,进入目标项目,导航到
Settings > Database > Backups - 创建并下载最新的全库备份文件(格式为
.dump或.sql) - 提取并恢复public schema:
- 先从备份文件生成public schema的对象列表:
pg_restore -l <backup-file-path> | grep public > public_schema_objects.txt- 基于列表恢复指定schema:
pg_restore -h localhost -U <local-db-user> -d <local-db-name> -L public_schema_objects.txt <backup-file-path>
注意事项
- 确保Supabase的数据库用户拥有
SELECT、USAGE等导出public schema所需的权限 - 本地PostgreSQL用户需要有创建表、序列等对象的权限
- 若存在跨schema的外键依赖,需提前处理(仅复制public schema的话一般无需担心)
内容的提问来源于stack exchange,提问作者Vince Frost
相关产品推荐
相关产品推荐

