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

时间:2011-08-22 14:03:07

标签: mysql postgresql sqlite heroku backup

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

3 个答案:

答案 0 :(得分:23)

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

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

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

$ heroku addons:add pgbackups # To install the addon
$ curl -o latest.dump `heroku pgbackups:url` # To download a dump

答案 1 :(得分: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

其中myuser是当前用户,mydb是当前数据库。

如果您正在使用Postgres.app,那么在本地复制您的生产数据库非常简单。您可以省略-U myuser,除非您另外配置了它,并通过运行$ psql -h localhost然后CREATE DATABASE your_database_name;(来自Postgres.app documentation创建数据库。然后运行上面的命令并且您'重新设定。

答案 2 :(得分:4)

按照终端中的这4个简单步骤(Heroku Dev Center):

  1. 安装Heroku备份工具:

    $ heroku addons:add pgbackups
    
  2. 开始使用它:

    $ heroku pgbackups:capture
    
  3. 使用curl:

    在Heroku上下载远程数据库(到本地计算机)
    $ curl -o latest.dump 'heroku pg:backups public-url'
    
  4. 加载*:

    $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U YOUR_USERNAME -d DATABASE_NAME latest.dump
    
    • 获取您的用户名并从config / database.yml文件中选择所需的数据库。
    • DATABASE_NAME可以是您的开发/测试/生产数据库(例如mydb_development)
  5. 就是这样!

    更新:更新为新界面