如何从Heroku导入大型数据库到本地mysql或sqlite3?

ale*_*nde 13 mysql sqlite postgresql backup heroku

根据标题,我需要导入,但PG备份给了我严格的Postgres SQL,它不适用于MySQL,也使用非指定的编码,我猜是UTF-16.使用db:pull在完成之前需要使用年龄和错误.我很感激任何建议.谢谢.

mu *_*ort 23

在本地设置PostgreSQL,使用PG备份将数据从Heroku复制到本地计算机,然后pg_restore将其导入到新的本地PostgreSQL中.然后你可以在本地将它从PostgreSQL复制到MySQL或SQLite,而不必担心超时.或者,既然之后你有一个功能性的PostgreSQL安装,只需在PostgreSQL之上开始开发,这样你的开发堆栈就可以更好地匹配你的部署堆栈; 在同一个数据库上开发和部署是个好主意.

您可能正在pg_dump -Fc从Heroku 获得二进制转储(即),这可以解释为什么转储看起来像某种UTF-16废话.

您可以使用pgbackups 插件导出数据库转储

$ heroku addons:add pgbackups # To install the addon
$ curl -o latest.dump `heroku pgbackups:url` # To download a dump
Run Code Online (Sandbox Code Playgroud)

  • http://postgresapp.com现在让在Mac上本地运行Postgres变得微不足道. (7认同)
  • @aledalgrande:如果你要部署到Heroku,那么在PostgreSQL上开发绝对是值得的.所有数据库都有微妙且不那么微妙的差异(GROUP BY,区分大小写,布尔值,函数可用性,数据类型,转换要求,截断或引发异常......)并且没有ORM可以保护您免受所有这些差异的影响.在同一堆栈上节省一些悲伤,开发和部署. (4认同)
  • 最后我结束安装PG(或者您可以使用Lion附带的那个).过程是:*创建一个PG用户*用pg_restore恢复转储*安装**pg**和**taps**gems*在postgres上启动点击服务器:`taps server postgres:// root @ localhost/rcp_dev tapsuser tapspassword`*将数据拉到sqlite3(对于mysql也一样):`taps pull sqlite://db/development.sqlite3 http:// tapsuser:tapspassword @ localhost:5000` (2认同)

mic*_*ael 22

Heroku有关于如何执行此操作的说明:https://devcenter.heroku.com/articles/heroku-postgres-import-export#restore-to-local-database,其归结为:

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
Run Code Online (Sandbox Code Playgroud)

myuser当前用户在哪里,mydb是当前数据库.

如果你正在使用Postgres.app,那么在本地复制你的生产数据库是非常简单的.-U myuser除非你另外配置了它,否则你可以省略$ psql -h localhost,然后通过运行然后CREATE DATABASE your_database_name;(从Postgres.app文档中创建数据库.然后运行上面的命令,你就可以了.