在Heroku中查看数据库

时间:2012-01-29 10:18:45

标签: django postgresql heroku

我在Heroku设置了一个Django应用程序,数据库开始收集数据。为了更容易地调试,我想将我的开发机器直接连接到数据库。这可以和Heroku一起使用吗?

3 个答案:

答案 0 :(得分:3)

正如Kirsten所说,目前无法从Heroku平台外部访问共享数据库计划(这是为'生产' Postgres服务保留的内容)。但是,还有其他一些选择。

其中一个主要是将数据拉下来并在本地查看。 By using the Taps rubygem这很幸运非常简单:

$ heroku db:pull
...
Receiving schema
Receiving data
8 tables, 591 records
users:         100% |==============================================| Time: 00:00:00
pages:         100% |==============================================| Time: 00:00:00
comments:      100% |==============================================| Time: 00:00:00
tags:          100% |==============================================| Time: 00:00:00
Receiving indexes
Resetting sequences

如果您正在使用大型数据集,还有一些其他选项可以让这项任务更轻松:

# -c, --chunksize SIZE # specify the number of rows to send in each batch
# -d, --debug          # enable debugging output
# -e, --exclude TABLES # exclude the specified tables from the push
# -f, --filter REGEX   # only push certain tables
# -r, --resume FILE    # resume transfer described by a .dat file
# -t, --tables TABLES  # only push the specified tables

所有这些都可以在heroku gem source中找到。

也可以在Heroku上下文之外使用Tap。 See the README for more information.

第二个选项,对于更大的数据集更为可取的选项是使用Heroku pgbackups add-on。这将允许您创建数据库的转储,然后在本地下载该文件以导入干净的数据库。由于Taps的工作方式,这比Taps快得多。

使用很简单:

$ heroku update

$ heroku addons:add pgbackups
Adding pgbackups to myapp... done

$ heroku pgbackups:capture

DATABASE_URL  ----backup--->  b003

Dump... 2.6MB, done
Upload... 2.6MB, done

$ heroku pgbackups
ID   | Backup Time         | Size    | Database             
-----+---------------------+---------+----------------------
b003 | 2010/10/22 15:16.01 |   2.6MB | SHARED_DATABASE_URL  
b004 | 2010/10/22 15:18.12 | 424.7MB | HEROKU_POSTGRESQL_URL

$ heroku pgbackups:url b004
"http://s3.amazonaws.com/hkpgbackups/app1234567@heroku.com/b004.dump?AWSAccessKeyId=ABCD1234&Expires=1289261668&Signature=3mMBeKISewgEUDT%2FL5mRz4EYS4M%3D"

可以下载和导入最后一个URL。

答案 1 :(得分:0)

我还没有测试过,但database_url用于包含数据库的整个配置

例如

DATABASE_URL => postgres的://名称:password@ec2-107-22-181-237.compute-1.amazonaws.com/kjrbnwxjoc

现在映射到database.yml

适配器:postgres   数据库:kjrbnwxjoc   游泳池:5   超时:5000   用户名:名称   密码:密码   主持人:ec2-107-22-181-237.compute-1.amazonaws.com

希望这会帮助你,除非heroku允许远程访问他们的数据库并希望不是因为如果他们允许你远程访问数据库,那么你可以在他们的数据库上加载任何类型的负载。出于调试目的,您可以使用xeround配置为heroku应用程序和本地应用程序的数据库...它们确实提供试用期。

由于

答案 2 :(得分:0)

我不认为您可以使用配置进行直接访问。根据这里的heroku文档: http://devcenter.heroku.com/articles/database

我可以从其他应用或主机访问我的数据库吗? 共享数据库

不支持从Heroku外部的计算机连接到您的数据库。我们建议您将数据访问封装在API中以进行操作。

专用数据库

可以使用我们的pg:ingress功能连接到我们的专用数据库。有关更多信息,请参阅使用PG控制台。