2016-09-06 57 views
2

我試圖過R執行一個SQL查詢,從Access數據庫獲取數據執行SQL與「象」語句中的R語言

普通的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*"')) 

錯誤: 「07002 -3010 [微軟] [ODBC Microsoft Access驅動程序]參數太少預計2」 [1]
[2] 「[RODBC]錯誤:無法SQLExecDirect的「SELECT R.ID,R.Template,R.WEDate從r WHERE(R.Template如\」 \「)'

是否有一種方法來解決這個問題。

+1

想一想,試着用'%'代替'*'。 – joran

+0

@joran還是一樣的錯誤 –

+1

嘗試使用雙引號和單引號(單引號在內部,外部雙引號)。 – joran

回答

2

考慮的@ joran與單引號包圍字符串和使用ANSI-92通配符%建議。正在進行內部時,您會用星號,*(ANSI-89模式)查詢,即在MSAccess.exe GUI程序(默認爲DAO)內,或者如果您使用DAO連接外部Access。同時,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%'") 
+0

這個組合運作良好,謝謝你的想法兄弟 –