无需使用AWS将本地PostgreSQL数据库上传至Heroku的方法咨询
无AWS的Heroku Postgres本地数据库导入方案
完全可以跳过AWS直接通过本地工具完成导入,操作步骤如下:
- 前置准备:本地安装PostgreSQL客户端工具(确保
pg_dump、psql等命令可用),同时安装Heroku CLI并登录你的Heroku账号 - 第一步:导出本地PostgreSQL数据库为备份文件
执行以下命令生成本地数据库的压缩备份包,避免权限冲突:pg_dump -Fc --no-acl --no-owner -h localhost -U 替换为本地数据库用户名 替换为本地数据库名 > local_pg_dump.dump - 第二步:获取Heroku Postgres的访问凭证
在本地终端切换到你的Heroku应用目录,执行命令获取数据库连接信息:
执行后可以拿到数据库的主机地址、用户名、密码、数据库名等信息,也可以直接复制完整的heroku pg:credentials:url --app 替换为你的Heroku应用名DATABASE_URL值备用 - 第三步:导入备份到Heroku Postgres,二选一即可:
方案1(Heroku CLI一键导入,推荐):
如果Heroku数据库已有数据,先执行清空命令(确认后再操作,数据无法恢复):
再执行本地数据库直接推送命令:heroku pg:reset DATABASE_URL --app 替换为你的Heroku应用名
方案2(手动用pg_restore导入):heroku pg:push 替换为本地数据库名 DATABASE_URL --app 替换为你的Heroku应用名
用第一步生成的备份文件执行导入,执行后输入第二步拿到的Heroku数据库密码即可:pg_restore --verbose --clean --no-acl --no-owner -h 替换为Heroku数据库主机地址 -U 替换为Heroku数据库用户名 -d 替换为Heroku数据库名 -p 5432 local_pg_dump.dump - 注意事项:
- 本地PostgreSQL的大版本建议等于或低于Heroku Postgres的版本,避免出现兼容性导入失败问题
- 如果使用Heroku免费层Postgres,需确认本地数据库的总数据行数不超过免费层的限额,否则会导入失败
- 导入过程中不要中断终端运行,避免数据写入不完整
内容的提问来源于stack exchange,提问作者Articial
相关产品推荐
相关产品推荐

