如何在heroku数据库中查找行数

Posted

技术标签:

【中文标题】如何在heroku数据库中查找行数【英文标题】:How to find number of rows in heroku database 【发布时间】:2012-09-08 02:54:51 【问题描述】:

标题几乎概括了我的问题,但这里有更多细节:

我正在运行一个脚本来将行导入 Heroku 数据库。我开始收到错误:

<class 'django.db.utils.DatabaseError'> current transaction is aborted, commands ignored until end of transaction block`

脚本在我的本地主机上运行顺利,所以我不是在那里寻找问题。我最近收到了一封来自 heroku 的电子邮件,说我“接近开发数据库的行数限制”

我假设我达到了行数限制,但我想在采取进一步行动之前确认这一点。

有谁知道我如何找到整个数据库的当前行数? (我知道我可以对每张桌子进行计数,但我希望有更清洁的方法)

【问题讨论】:

【参考方案1】:

这将为您提供数据库中所有行的大致计数:

 SELECT sum(reltuples) from pg_class where relname IN (SELECT c.relname
 FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
 WHERE c.relkind = 'r'
 AND n.nspname <> 'pg_catalog'
 AND n.nspname <> 'information_schema'
 AND n.nspname !~ '^pg_toast'
 AND pg_catalog.pg_table_is_visible(c.oid));

虽然错误消息表明您的数据库存在一些错误,但可能是违反约束而不是您的插入权限被撤销。

【讨论】:

感谢 sql 语句。我希望 Heroku 有一些更简单的东西,但这很有效。你假设它是违反约束是正确的,但一半的进口工作,所以我不认为是这样。我超过了我的行数限制,所以希望这就是问题【参考方案2】:

如果您有 heroku cli 工具,它会为您提供数据库中的行数等信息

heroku pg:info -a your_app

还给出了您的计划类型、数据库状态、当前连接数、postgres 版本、数据库创建时间、计划中的行数、数据大小、表数以及您的数据库是否有任何叉/跟随选项已激活。

【讨论】:

嗯。在我的应用程序上,这个命令不会告诉我行数。它给了我你提到的所有属性,除了使用的行数和我的计划中的行数。 (我知道后者是1000万,因为这个应用是在“基本”计划中。) FWIW 只有开发和基本层数据库通过pg:info 提供行数。 这里也一样。为 Dev 计划报告的行数,但不是 Basic。 生产层或基本计划中未报告行数。 如果您已经在应用目录中,也可以直接输入heroku pg:info而不指定应用【参考方案3】:

Heroku 发布了a "pg-extras" toolbelt,它可以为您提供额外的信息,例如数据库的行数。

即使您有比 Hobby 更高的计划,您也可以通过执行以下操作获得行数:

heroku plugins:install heroku-pg-extras

然后:

heroku pg:index_usage --app dashboard

这将为您提供每个表的行数。

【讨论】:

请注意,您也需要在本地安装 postgresql 才能正常工作;否则,您将收到错误“无法找到本地 psql 命令”

以上是关于如何在heroku数据库中查找行数的主要内容,如果未能解决你的问题,请参考以下文章

如何查找和计算两个不同数据帧之间的重复行数? [关闭]

如何查找 MinMaxScaler 对象中的行数和列数?

如何删除EXCEL表中的大量数据行,要删除的行数大概8万

如何在不使用count(*)的情况下在greenplum中查找表中的行数

在 Pyspark 中查找给定时间窗口中的行数

在返回的mysql结果中查找行数(nodejs)