使用"执行SQL" R语言中的陈述

时间:2016-09-06 18:22:49

标签: r rodbc

我正在尝试通过R执行SQL查询以从Access DB获取数据

正常的SQL语句工作正常,但是当涉及到语句时抛出错误

以下是代码:

library(RODBC);
channel = odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb,    *.accdb)};DBQ=C:/Users/ADMIN/Documents/R.accdb")
test = sqlQuery(channel ,paste('SELECT R.ID, R.Template, R.WEDate FROM R WHERE R.Template Like "*slow*"'))

错误: [1]" 07002 -3010 [Microsoft] [ODBC Microsoft Access Driver]参数太少。预期2。"
[2]" [RODBC]错误:无法SQLExecDirect' SELECT R.ID,R.Template,R.WEDate FROM R WHERE(R.Template Like \" slow \")'

有没有办法解决这个问题。

1 个答案:

答案 0 :(得分:2)

考虑使用单引号括起字符串文字并使用ANSI-92通配符运算符%的@joran建议的两者。在运行内部查询时,即在MSAccess.exe GUI程序(默认为DAO)内部或者使用DAO从外部连接到Access时,可以使用星号*(ANSI-89模式)。同时,ADO连接使用大多数外部接口使用的百分比符号,包括RODBC。

我能够重现您的问题,这些补救措施都有效。此外,不需要使用paste(),因为您没有将任何其他对象连接到查询语句。

library(RODBC);
channel = odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)}; 
                             DBQ=C:/Users/ADMIN/Documents/R.accdb")

test = sqlQuery(channel, 
                "SELECT R.ID, R.Template, R.WEDate FROM R WHERE R.Template Like '%slow%'")