2013-10-11 6 views
3

Каков наилучший способ прервать долговременный запрос в RPostgresql?Как прервать запрос RPostgresql в R

Например, я хотел бы видеть первые 10 строк таблицы и предназначены для ввода,

dbGetQuery(con," 
    select * from big.table 
    limit 10 
    ") 

Но я иногда оставить из «предела 10», а затем моя программа работает навсегда. Нажатие ctrl-C или кнопки остановки из моего R-терминала не работает. Я либо должен долго ждать, а затем видеть полный вывод печати, или я могу прервать процесс R.

ответ

5

Вы можете попытаться установить соединение с Postgres с помощью psql ищите свой запрос в select * from pg_stat_activity, а затем используйте select pg_cancel_backend(long_query_pid) для отмены запроса.

Или вы можете использовать эти запросы внутри R.

+0

Есть ли способ сделать это внутри R без прохождения psql (или RPostgresql)? Странно, что безопасность такова, что у меня нет разрешения на отмену запросов (даже моих собственных) на сервере. Единственный способ аннулировать запрос - это закрыть мой клиент. –

+0

@dchandler Вы можете выполнять эти запросы из всего, что может выполнять запросы. Я упомянул 'psql' только потому, что он обычно доступен. Что касается разрешения, это то, что руководство sais: «Вы можете выполнить это против другого бэкэнд, который имеет ту же роль, что и пользователь, вызывающий функцию. Во всех остальных случаях вы должны быть суперпользователем». –

+1

@dchandler Найдено, что цитата из руководства относится к 9.2 или более поздним версиям. В 9.1 или ранее он ограничивается только суперпользователями. –

3

Использование RPostgres. Он извлекает данные по строке за раз, поэтому вы можете легко прервать ее в любой момент.