Sca*_*bee 21 sql-server r rodbc
我使用RODBC向SQL-Server发送查询.有时它们需要花费太多时间来运行,所以我需要取消它们.
单击RStudio中的红色"停止"按钮会产生以下错误消息:
R没有响应您的中断处理请求,因此要停止当前操作,您可能需要完全终止R.
终止R将导致您的R会话立即中止.将中断活动计算,并且将丢弃未保存的源文件更改和工作空间对象.
你想现在终止R吗?
如果我单击是,我的会话确实已终止.(注意:使用Rgui而不是RStudio不会让事情变得更好)
然而:
当我使用另一个软件(名为"Query ExPlus")连接到同一个SQL-Server时,我有一个类似的停止按钮,然后单击它会立即中断查询,而不会发生任何崩溃.
当我使用RPostgres包连接到PostgreSQL数据库时,我也可以随时中断查询.
这两点让我觉得应该有办法解决我的问题.我能做什么?
到目前为止,我的解决方法是:
library(RODBC)
library(R.utils)
withTimeout(mydf <- sqlQuery(myconnection, myquery), timeout=120)
Run Code Online (Sandbox Code Playgroud)
注意:我没有权限从数据库端终止查询.
我偶然发现了这个odbc包裹.它允许随时中断查询.
基本用法如下:
library(DBI)
myconnection <- dbConnect(odbc::odbc(),
driver = "SQL Server",
server = "my_server_IP_address",
database = "my_DB_name",
uid = "my_user_id",
pwd = "my_password")
dbGetQuery(myconnection, myquery)
Run Code Online (Sandbox Code Playgroud)
我对幕后发生的事情没有深刻的理解,但对于我个人使用到目前为止看到的内容,这个软件包还有其他优点RODBC:
stringsAsFactors,as.is必要的论据| 归档时间: |
|
| 查看次数: |
6464 次 |
| 最近记录: |