如何中断 R 中的 RPostgresql 查询
Posted
技术标签:
【中文标题】如何中断 R 中的 RPostgresql 查询【英文标题】:How do I interrupt a RPostgresql query in R 【发布时间】:2013-10-11 15:57:58 【问题描述】:在 RPostgresql 中中断长时间运行的查询的最佳方法是什么?
例如,我想查看表格的前 10 行并打算输入,
dbGetQuery(con,"
select * from big.table
limit 10
")
但有时我会忽略“限制 10”,然后我的程序就会永远运行。从我的 R 终端按 ctrl-C 或停止按钮不起作用。我要么必须等待很长时间才能看到完整的输出打印,要么我可以中止 R 进程。
【问题讨论】:
【参考方案1】:您可以尝试使用psql
连接到Postgres,在select * from pg_stat_activity
中查找您的查询,然后使用select pg_cancel_backend(long_query_pid)
取消查询。
或者你可以在 R 中使用这个查询。
【讨论】:
有没有办法在 R 中做到这一点而无需通过 psql(或 RPostgresql)?奇怪的是,安全性使得我无权取消服务器上的查询(甚至是我自己的)。我可以取消查询的唯一方法是关闭我的客户端。 @dhandler 你可以从任何可以执行查询的地方执行这个查询。我提到psql
只是因为它通常可用。至于权限,这就是手册所说的:“您可以针对与调用该函数的用户具有完全相同角色的另一个后端执行此操作。在所有其他情况下,您必须是超级用户。”
@dhandler 发现手册中的引用是针对9.2或更高版本的。在 9.1 或更早版本中,它仅限于超级用户。
@IgorRomanchenko 感谢您的建议。我认为您的第一个答案很好,如果权限允许,它会起作用。【参考方案2】:
使用RPostgres。它一次获取一行数据,因此您可以随时轻松地中断它。
【讨论】:
我可以使用这个库增加一些额外的超时时间吗?以上是关于如何中断 R 中的 RPostgresql 查询的主要内容,如果未能解决你的问题,请参考以下文章
将 RpostgreSQL 与 sqldf 一起使用会使 R 崩溃
R 在使用 dplyr 或 RPostgreSQL 的模式下访问 redshift 表
使用 RPostgreSQL 和 dplyr 将 R 连接到 Redshift 的理论是啥
R RPostgreSQL 使用 SSL 连接到远程 Postgres 数据库