根据标题,我需要导入,但PG备份给了我严格的Postgres SQL,它不能与MySQL一起使用,也使用非指定的编码,我猜是UTF-16。使用db:pull在完成之前需要使用年龄和错误。 我很感激任何建议。感谢。
答案 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)
安装Heroku备份工具:
$ heroku addons:add pgbackups
开始使用它:
$ heroku pgbackups:capture
使用curl:
在Heroku上下载远程数据库(到本地计算机)$ curl -o latest.dump 'heroku pg:backups public-url'
加载*:
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U YOUR_USERNAME -d DATABASE_NAME latest.dump
就是这样!
更新:更新为新界面