发送 - 获取 - 清除
您已经多次使用 dbGetQuery() 了。它是 DBI 包中的一个虚函数,实际由 RMySQL 包实现。在幕后,会依次执行以下步骤:
- 使用
dbSendQuery()发送指定的查询; - 使用
dbFetch()获取在数据库中执行该查询的结果; - 使用
dbClearResult()清除结果。
这一次我们不使用 dbGetQuery(),而是手动实现上述步骤。虽然写起来更繁琐,但这样可以分批提取查询结果,而不是一次性全部取回。您可以在 dbFetch() 中通过设置参数 n 来实现分批获取。
本练习是课程的一部分
R 数据导入进阶
练习说明
- 先检查已为您编写好的
dbSendQuery()调用。它会选择 id 大于 4 的用户的评论。 - 使用
dbFetch()两次。第一次调用时,将参数n设为2,只导入查询结果中的 2 条记录;第二次调用时导入剩余的所有记录(不指定n)。两次调用都直接打印得到的数据框。 - 使用
dbClearResult()清除res。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Connect to the database
library(DBI)
con <- dbConnect(RMySQL::MySQL(),
dbname = "tweater",
host = "courses.csrrinzqubik.us-east-1.rds.amazonaws.com",
port = 3306,
user = "student",
password = "datacamp")
# Send query to the database
res <- dbSendQuery(con, "SELECT * FROM comments WHERE user_id > 4")
# Use dbFetch() twice
# Clear res