我不知道为什么我的SQL语句不起作用

时间:2019-01-26 20:40:18

标签: sql r rodbc sqldf

我是SQL的新手,以为我会写一条简单的语句来了解它的工作原理。我首先连接到包含名为LuPull的表的数据库。我要做的就是从LuPull中选择服务编号为A107118的所有行,但是找不到表。

我已经更新了软件包,尝试了SQL语句的所有组合,使用了

sqlColumns(pers, "LuPull")$COLUMN_NAME

确实返回了所有列名,所以我知道它可以看到表,甚至使用Access来生成查询并复制并粘贴Access SQL代码,但是我得到的只是这个错误:

  

result_create(conn @ ptr,statement)中的错误:没有这样的表:LuPull

library(RODBC)
library(sqldf)
db <- "C:/Projects/MFData2005-2015.accdb"
pers <- odbcConnectAccess2007(db) 
A107 <- sqldf("SELECT * FROM LuPull WHERE LuPull.[Service Number]='A107118'")
View(A107)
close(pers)

2 个答案:

答案 0 :(得分:1)

使用Access数据库不需要sqldf。使用RODBC库中的sqlQuery来选择数据。

library(RODBC)
db <- "C:/Projects/MFData2005-2015.accdb"
pers <- odbcConnectAccess2007(db) 
A107 <- sqlQuery(pers,"SELECT * FROM LuPull WHERE LuPull.[Service Number]='A107118'")
View(A107)
close(pers)

RODBC Docs

答案 1 :(得分:0)

MS Access不使用单引号分隔字符串。它使用非标准的双引号。

也许将查询表述为有效的MS Access语法会有所帮助:

SELECT *
FROM LuPull
WHERE LuPull.[Service Number] = "A107118"