尝试使用dplyr在R中的SQL数据库中选择/过滤数据

时间:2019-02-01 20:12:27

标签: sql r dplyr dbi

对于我的一项任务,我必须使用dplyr从已加载到R中的SQL数据库中选择/过滤信息。我已成功连接到数据库,但是使用dplyr来对表进行排序时遇到了麻烦。

这是我的代码:

library(DBI)
library(RMySQL)
library(dplyr)
conn <- dbConnect(RMySQL::MySQL(), "richardtwatson.com", 
dbname="ClassicModels", user="student", password="student")
t <- select(conn, customerNumber.Customers)

我不断收到此错误消息:

  

UseMethod(“ select_”)中的错误:
  没有适用于“ select_”的适用方法应用于类“ c('MySQLConnection','DBIConnection','DBIObject')”的对象。

如果有人可以引导我朝正确的方向发展,那将是很棒的,我是R编程新手。谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想通过ODBC / DBI而不是SQL使用dplyr语法:

  1. 使用dbConnect连接到首选数据库(如上所述)
  2. 指向表t <- tbl(conn, 'some_table')
  3. 使用t %>% select(some_col_1, some_col_2) %>% filter(some_col == 'some_crit')的查询表
  4. 别忘了断开dbDisconnect(conn)

此方法在服务器中运行之前将dplyr转换为SQL。我发现对于某些操作,您需要先转换为小标题%>% as_tibble()

答案 1 :(得分:0)

您必须使用DBI包中的函数来发送或获取查询,并使用SELECT在函数中写下SQL查询。 此处的示例:https://db.rstudio.com/dbi/

conn <- dbConnect(RMySQL::MySQL(), 
"richardtwatson.com",dbname="ClassicModels", user="student", password="student")

t <- dbGetQuery(conn, "SELECT * FROM customerNumber.Customers")