如果oracle服務(wù)器是32bit的,那么在你的工作電腦上還是裝上32bit的oracle客戶端吧瑟捣。
順便說下如何在64bit的windows系統(tǒng)上如何安裝32bit oracle客戶端吧割疾。簡單說來就是64bit的windows本身并不支持32bit的oracle客戶端嚎卫,需要更改windows版本識別。
我在windows xp下安裝了32bit的oracle客戶端宏榕,然后安裝了R 3.0.1及RODBC拓诸。配置好后侵佃,就可以通過ODBC的方式輕松連上單位的oracle數(shù)據(jù)庫了。這一步實(shí)現(xiàn)起來并不難恰响。
在簡單的使用當(dāng)中發(fā)生了以下幾個比較有意思的意外:
- 發(fā)生了sql語句的意外終止:
library(RODBC)
channel <- odbcConnect(DSN,uid,pwd)
sql1 <- sqlQuery(channel, 'select * from Table while sampleno='sql'')
錯誤發(fā)生了趣钱。
查找了半天然后電話咨詢了半天,最后發(fā)現(xiàn)了第一個錯誤:
while
oracle中應(yīng)該是where胚宦。
- 在修改成where之后繼續(xù)上述語句首有,然后繼續(xù)報錯,并且發(fā)現(xiàn)了R在解析sql語句的時候where后面的取值并不完整枢劝。你能發(fā)現(xiàn)錯誤在哪里嗎井联?
sql1 <- sqlQuery(channel, 'select * from Table where sampleno='sql'')
經(jīng)歷多次修改后發(fā)現(xiàn)了問題:
sqlQuery里面的sql語句應(yīng)該包括在一個雙引號里面,而不是一個單引號您旁,在我們?nèi)粘5腞 code中單雙引號一般都是在混用的烙常,這是我第一次對單雙引號的使用產(chǎn)生了謹(jǐn)慎。正確的用法應(yīng)該是
sql1 <- sqlQuery(channel, "select * from Table while sampleno='sql'")
順利完成了RODBC通過ODBC連接oracle數(shù)據(jù)庫的第一次鹤盒。