在 R 中使用 RMySQL 时 dbSendQuery 只返回 500 行
dbSendQuery only returning 500 rows when using RMySQL in R
我正在使用 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 个的预期。
tablesome_table
有292000行,应该问题不大
对于 R.
我在我的架构中尝试了各种其他 tables(例如,
some_other_table
) 并得到相同的结果。所以看起来是
关于 fetch
函数本身的东西。
- 我尝试使用
dbGetQuery
和 dbFetch
但没有成功。
这个错误是什么意思,我怎样才能得到我的 table 中的所有行?
跟进
我发现我可以通过使用
吞下整个 table
dbReadTable(con, 'some_table')
您看到的是正常行为。 RMySQL
实现仅检索 n
条记录,如果 n
丢失,则仅 return 到 fetch.default.rec
的 [=23= 调用中指定] ](默认为 500)。
到 return 所有行都使用 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)
这个 link 对以有用的方式使用 RMySQL
包有很大帮助: Accessing MySQL through R
它还包括您必须将参数 n=-1
传递给 fetch
函数以检索所有数据,而不仅仅是 500 rows
中默认设置的第一个 500 rows
=12=]函数。
希望对你有所帮助,就像它对我一样。
其他有用的links:
我正在使用 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 个的预期。
table
some_table
有292000行,应该问题不大 对于 R.我在我的架构中尝试了各种其他 tables(例如,
some_other_table
) 并得到相同的结果。所以看起来是 关于fetch
函数本身的东西。- 我尝试使用
dbGetQuery
和dbFetch
但没有成功。
这个错误是什么意思,我怎样才能得到我的 table 中的所有行?
跟进
我发现我可以通过使用
吞下整个 tabledbReadTable(con, 'some_table')
您看到的是正常行为。 RMySQL
实现仅检索 n
条记录,如果 n
丢失,则仅 return 到 fetch.default.rec
的 [=23= 调用中指定] ](默认为 500)。
到 return 所有行都使用 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)
这个 link 对以有用的方式使用 RMySQL
包有很大帮助: Accessing MySQL through R
它还包括您必须将参数 n=-1
传递给 fetch
函数以检索所有数据,而不仅仅是 500 rows
中默认设置的第一个 500 rows
=12=]函数。
希望对你有所帮助,就像它对我一样。
其他有用的links: