我试图查看我的heroku实例上的数据。 我希望能够在他们的服务器上查看数据库..
我不想把它拉到我的本地系统..更重要的是,我不想等那么久,看看数据。
让我们假设我将当前数据库中的800万本书(以及所有相关的元数据)推送到heroku。然后在两个月内我又增加了1200万。 (我还处于开发模式) 如果我对一批数据有问题,我认为下拉整个数据库是不可行的。
我想在等待下载数据时我可以做仰卧起坐。我听说那些老程序员在编译过程中做了什么。
我已经查看了Viewing database in Heroku,它只是一个"无法做到。"
真的吗?我们无法查看实时数据?
答案 0 :(得分:16)
您可以使用JackDB (http://www.jackdb.com)。
JackDB是Web浏览器中的数据库客户端,它与Heroku集成OAuth。它允许您列出Heroku应用程序及其各自的数据源,然后连接到它们以运行SQL查询。有关如何将其与Heroku一起使用的详细信息,请参阅docs。
这是它的样子:
http://static.jackdb.com/assets/img/blog/jackdb-heroku-oauth-connect.gif
还有Heroku CLI的JackDB Heroku plugin。该插件允许您从命令行运行heroku jackdb
以连接到默认数据库。如果您有多个数据库并希望明确选择要连接的数据库,还有其他选项。
安装它:
$ heroku plugins:install https://github.com/jackdb/jackdb-heroku-plugin.git
连接到默认数据库:
$ heroku jackdb
完全披露:我是JackDB的创始人。
答案 1 :(得分:14)
来自https://devcenter.heroku.com/articles/heroku-postgresql
Heroku Postgres可以通过CLI附加到Heroku应用程序:
$ heroku addons:add heroku-postgresql:dev
使用heroku pg:psql
与远程数据库建立psql会话。
答案 2 :(得分:7)
尝试
heroku pg:psql
您将自动了解后续步骤
答案 3 :(得分:3)
(未经测试,但似乎正是您要找的......)
答案 4 :(得分:3)
要直接从Heroku查看数据库,我只需在https://dataclips.heroku.com/创建整个数据库的“Dataclip”。您也可以从postgreSQL应用程序到达那里。在此页面中,执行SQL查询以查看所需数据。
如果您不确定数据库中有哪些表,请使用以下命令查看它们:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
答案 5 :(得分:0)
取决于“查看数据库”的含义。如果你正在寻找一个真正的SQL控制台,你可能会运气不好;但是,始终有heroku console
可以让您访问附加到您的应用及其Heroku数据库的IRB会话。从那里,您可以使用Book.where("title = ?", @title)
或Book.count
等常用命令或任何您需要的命令。
答案 6 :(得分:0)
嗯,这不是一个完美的答案,但最好的方法是使用控制台IMO。
为了让这更容易一些,我在我的一些模型上放了一个类方法来打印它们。我的应用程序的一个例子是:
class User
def self.list
puts "ID. Name - Email\n"
self.all.each do |user|
puts "#{user.id}. #{user.name} - #{user.email}\n"
end
end
end
在控制台中,您只需拨打User.list
即可获取列表。
现在这个方法没有得到很好的优化,如果它被编写好会被链接到查询的末尾会更好,但你会得到基本的想法。
这有点笨拙,但制作这样的显示辅助方法可能是在Heroku上内省数据的最快方法。
否则,我的建议是联系他们并征求建议,根据我的经验,Heroku的工作人员对这些请求非常敏感和乐于助人。
我希望这会给你一两个想法。
答案 7 :(得分:0)
您无法直接连接到共享Heroku实例 - 如果您使用专用的Postgres Heroku插件,则可以直接连接本地系统的PG工具。但是,这样做会有很大的成本上涨。
答案 8 :(得分:0)
我知道这是一个老问题,但我想如果有人有兴趣我会回答。我一直在使用PG Commander在本地和heroku上查看我的数据库。它不是免费的(目前28英镑),但它非常好。
转到Heroku databases,所有登录详细信息都会在那里。
答案 9 :(得分:0)