我想从R中的SQL服务器获取一些数据。我这样做的方式是,
rs=dbSendQuery(con,"myquery")
data=fetch(rs,n=-1)
这适用于小桌子。但是,对于更大的表,fetch命令说,
Warning message:
In fetch(ms, n = -1) : error while fetching rows
即使我限制行(n = 10),问题仍然存在。所以,我不确定这是一个超时问题还是什么。
可能是这样的?
数据显示,
1] creator ratio
<0 rows> (or 0-length row.names)
我想提到几点可以帮助OP
识别和解决问题。
1)不要使用fetch
。而是使用dbFetch
。来自R-help的引用表明为
提供fetch()是为了与旧的DBI客户端兼容 - 对于所有新代码,强烈建议您使用dbFetch()
2)在Query Editor
中从SQL Server Management Studio
执行查询并检查性能。微调表使用查询索引。一旦准备好,快乐从R
尝试
3)如果query
选择了很多列,那么最好先尝试选择一列或两列。
4)我希望你在代码的后面部分释放资源并关闭连接。可以这样做:
# Free all resources
dbClearResult(rs)
# Close connection
dbDisconnect(con)
当遇到类似问题时,我得到了this question的帮助。正如他们所建议的那样,尝试输入一个非常大的数字,如n = 1000000,而不是n = -1。这对我行得通。