【问题标题】:Looking at the database on heroku查看heroku上的数据库
【发布时间】:2012-03-04 12:06:26
【问题描述】:

我正在尝试查看我的 heroku 实例上的数据。 我希望能够在他们的服务器上查看数据库..

我不想把它拉到我的本地系统。更重要的是,我不想等那么久,看看数据。

假设我将当前包含 800 万本书的数据库(以及所有相关的元数据)推送到 heroku。然后在两个月内我又增加了 1200 万。 (我还处于开发模式) 如果我的一批数据有问题,我认为拉下整个数据库是不可行的。

我想我可以在等待下载数据的同时做仰卧起坐。我听说这是老程序员在编译期间所做的。


我看过Viewing database in Heroku,只是“做不到”。
真的吗?不能看实时数据?

【问题讨论】:

    标签: ruby-on-rails postgresql heroku


    【解决方案1】:

    取决于“查看数据库”的含义。如果您正在寻找一个真正的 SQL 控制台,那么您可能不走运;但是,总是有heroku console 可以让您访问附加到您的应用程序及其 Heroku 数据库的 IRB 会话。从那里,您可以使用常用命令,例如 Book.where("title = ?", @title)Book.count 或任何您需要的命令。

    【讨论】:

    • 嗯……我在想一个控制台。 book.where 的问题是我想要 books.where,并且我想在列表中看到它们。不是我必须编写代码才能显示它们的对象。这对我来说似乎很笨重。
    【解决方案2】:

    (未经测试,但似乎这是您要寻找的东西..)

    https://github.com/ddollar/heroku-sql-console

    【讨论】:

    • 该插件现已弃用。 :(
    • 来自自述文件“此服务已被弃用。请改用 heroku pg:psql。”这绝对是最好的答案,并在下面作为单独的答案列出:stackoverflow.com/a/14793836/2098573
    【解决方案3】:

    嗯,这不是一个完美的答案,但最好的方法是使用控制台 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 工作人员对此类请求非常敏感并乐于助人。

    我希望这能给你一两个想法。

    【讨论】:

    • 并不是那么灵活,但是谢谢.. 我正在为我的 heroku 迁移而苦苦挣扎,虽然能够看到数据并不是我最大的障碍,但它就是其中之一。再次感谢。
    【解决方案4】:

    您无法直接连接到共享 Heroku 实例 - 如果您使用专用的 Postgres Heroku 插件,那么您可以直接连接本地系统中的 PG 工具。但是,这样做的成本会大幅增加。

    【讨论】:

    • 不适用于新的共享 postgres 插件,该插件仍处于测试阶段。
    【解决方案5】:

    来自https://devcenter.heroku.com/articles/heroku-postgresql

    Heroku Postgres 可以通过 CLI 附加到 Heroku 应用程序: $ heroku addons:add heroku-postgresql:dev

    要与远程数据库建立 psql 会话,请使用 heroku pg:psql

    【讨论】:

      【解决方案6】:

      要直接从 Heroku 查看数据库,我只需在 https://dataclips.heroku.com/ 处创建整个数据库的“Dataclip”。您也可以从 postgreSQL 应用程序到达那里。在此页面中,执行 SQL 查询以查看所需的数据。

      如果您不确定数据库中有哪些表,请使用以下命令查看它们:

      SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
      

      【讨论】:

        【解决方案7】:

        您可以使用JackDB (http://www.jackdb.com)

        JackDB 是 Web 浏览器中的一个数据库客户端,它与 Heroku 集成了 OAuth。它允许您列出 Heroku 应用程序及其各自的数据源,然后连接到它们以运行 SQL 查询。有关如何将其与 Heroku 一起使用的详细信息,请参阅 docs

        它是这样的:


        还有用于 Heroku CLI 的 JackDB Heroku plugin。该插件让您从命令行运行heroku jackdb 以连接到您的默认数据库。如果您有多个数据库并且想要明确选择要连接的数据库,还有其他选项。

        安装它:

        $ heroku plugins:install https://github.com/jackdb/jackdb-heroku-plugin.git
        

        要连接到您的默认数据库:

        $ heroku jackdb
        

        全面披露:我是JackDB的创始人。

        【讨论】:

        • JackDB 不再免费,还有其他解决方案吗?
        【解决方案8】:

        试试

        heroku pg:psql
        

        您将自动了解后续步骤

        【讨论】:

          【解决方案9】:

          我知道这是一个老问题,但如果有人感兴趣,我想我会回答。我一直在使用PG Commander 在本地和heroku 上查看我的数据库。它不是免费的(目前为 28 英镑),但非常好。

          转到您的Heroku databases,所有登录详细信息都会在那里。

          【讨论】:

          • 这是个老生常谈的问题。pgadmin 是一个免费的应用程序,连接到 heroku 真的很容易。所以你可以看到 heroku 上的数据库。
          【解决方案10】:

          Datasparc 尝试DBHawk。我们要求 Datasparc 为我们创建一个在线演示,并且成功了。

          【讨论】:

            猜你喜欢
            • 2012-02-21
            • 2012-11-27
            • 1970-01-01
            • 2019-01-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-01-22
            相关资源
            最近更新 更多