Как прервать запрос RPostgresql в R

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

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

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

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


person d_a_c321    schedule 11.10.2013    source источник


Ответы (2)


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

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

person Ihor Romanchenko    schedule 11.10.2013
comment
Есть ли способ сделать это в R без использования psql (или RPostgresql)? Как ни странно, безопасность такова, что у меня нет разрешения на отмену запросов (даже собственных) на сервере. Единственный способ отменить запрос — закрыть мой клиент. - person d_a_c321; 12.10.2013
comment
@dchandler Вы можете выполнять эти запросы из всего, что может выполнять запросы. Я упомянул psql только потому, что он общедоступен. Что касается разрешения, вот что говорит руководство: вы можете выполнить это против другого бэкэнда, у которого точно такая же роль, как у пользователя, вызывающего функцию. Во всех остальных случаях вы должны быть суперпользователем. - person Ihor Romanchenko; 12.10.2013
comment
@dchandler Обнаружил, что цитата из руководства относится к версии 9.2 или более поздним. В версии 9.1 или более ранней она доступна только суперпользователям. - person Ihor Romanchenko; 12.10.2013
comment
@IgorRomanchenko Спасибо за предложение. Я думаю, что ваш первый ответ великолепен и сработал бы, если бы разрешения позволяли это. - person d_a_c321; 14.10.2013

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

person hadley    schedule 26.02.2015
comment
Могу ли я добавить дополнительный увеличенный тайм-аут с помощью этой библиотеки? - person andilabs; 20.09.2018