You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Migrations:不使用第三方工具的PostgreSQL数据导入导出最优默认方案

Django + PostgreSQL:不用第三方工具的数据导入导出方案

一、导出数据

1. Django自带的dumpdata命令

这是最贴合Django开发流程的方式,导出的是和模型结构对应的JSON/XML/YAML数据,完全兼容migrations:

  • 导出所有应用的数据:
    python manage.py dumpdata > all_data.json
    
  • 只导出指定应用(比如myapp)的数据:
    python manage.py dumpdata myapp > myapp_data.json
    
  • 精准导出单个模型(比如myapp下的UserProfile):
    python manage.py dumpdata myapp.UserProfile > user_profiles.json
    
  • 如果不想导出Django内置的权限、内容类型模型,可以排除:
    python manage.py dumpdata --exclude auth --exclude contenttypes > app_data.json
    

2. PostgreSQL原生pg_dump命令

适合直接操作数据库,导出速度更快,适合大量数据场景:

  • 导出整个数据库为SQL文件:
    pg_dump -U 你的数据库用户名 -d 你的数据库名 > db_dump.sql
    
  • 只导出指定表(比如myapp_userprofile,Django模型对应的表名是应用名_模型名小写):
    pg_dump -U 你的数据库用户名 -d 你的数据库名 -t myapp_userprofile > userprofile_dump.sql
    
  • 导出为二进制格式(恢复时速度更快):
    pg_dump -U 你的数据库用户名 -d 你的数据库名 -Fc > db_dump.dump
    

二、导入数据

1. Django自带的loaddata命令

和dumpdata配套使用,自动处理模型间的关联关系:

  • 导入数据文件:
    python manage.py loaddata all_data.json
    
  • 重要提醒:导入前必须先通过python manage.py migrate创建好所有表结构,否则会因为找不到表报错。

2. PostgreSQL原生命令

  • 导入SQL格式的备份文件:
    psql -U 你的数据库用户名 -d 你的数据库名 < db_dump.sql
    
  • 导入二进制格式的备份文件(对应pg_dump -Fc的导出):
    pg_restore -U 你的数据库用户名 -d 你的数据库名 db_dump.dump
    
  • 如果是全新数据库,先创建空库再导入:
    createdb -U 你的数据库用户名 你的数据库名
    

三、新手必看注意事项

  • 操作前务必备份当前数据库,避免数据丢失。
  • 运行Django命令时,要在项目根目录下,且激活了虚拟环境。
  • PostgreSQL命令需要确保系统能找到它的执行文件——要么把PostgreSQL的bin目录加入环境变量,要么直接去安装目录的bin文件夹下运行。
  • 如果数据有复杂的外键关联,用Django命令导入时一般会自动处理,但如果遇到报错,可以尝试按依赖顺序分批导入(先导入被关联的模型数据)。

内容的提问来源于stack exchange,提问作者Naveen Pandia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:36:32