我正在使用RMySQL
来查询数据库。
我用过
df <- fetch(dbSendQuery(con, "SELECT some_col from some_table"))
并收到了这条消息:
Error in fetch(dbSendQuery(con, "SELECT some_col from some_table")) :
error in evaluating the argument 'res' in selecting a method for function 'fetch': Error in .local(conn, statement, ...) :
connection with pending rows, close resultSet before continuing
奇怪的是,df
实际上已经创建了; 500 obs. of 1 variables
,它确实让我回到了我对这500个人的期望。
表some_table
有292,000行,这应该不是问题
完全为R。
我尝试过我的架构中的各种其他表格(例如,
some_other_table
)得到了同样的结果。所以它似乎是
关于fetch
函数本身的事情。
dbGetQuery
和dbFetch
但没有成功。 此错误意味着什么,以及如何获取表格中的所有行?
关注
我发现我可以使用
来整理整张桌子 dbReadTable(con, 'some_table')
答案 0 :(得分:8)
您所看到的是正常行为。 RMySQL
实现仅检索n
个记录,如果缺少n
,则只返回fetch.default.rec
,如MySQL调用中所指定的那样(默认为500)。
要返回所有行,请使用n = -1
。
此外,为整个查询字符串指定一个名称,然后将该名称传递给fetch()
语句非常有用。
drv <- dbDriver("MySQL")
con <- dbConnect(drv, user = "username", password="password1",
host = "localhost", dbname="database")
res <- dbSendQuery(con, statement = paste(
"SELECT some_column1, some_column2",
"FROM some_table",
"WHERE some_column2 >= x",
"ORDER BY some_column1"))
data1 <- fetch(res, n = -1)
答案 1 :(得分:0)
此链接有助于以有用的方式使用RMySQL
包: Accessing MySQL through R
它还包括您必须将参数n=-1
传递给fetch
函数以检索所有数据,而不仅仅是{{1}中默认设置的第一个500 rows
功能。
我希望这对你有所帮助。
其他有用的链接: