关于RODBC连接oracle数据库并进行查询的简单介绍
2013-08-13 本文已影响0人
飞翔
如果oracle服务器是32bit的,那么在你的工作电脑上还是装上32bit的oracle客户端吧。
顺便说下如何在64bit的windows系统上如何安装32bit oracle客户端吧。简单说来就是64bit的windows本身并不支持32bit的oracle客户端,需要更改windows版本识别。
我在windows xp下安装了32bit的oracle客户端,然后安装了R 3.0.1及RODBC。配置好后,就可以通过ODBC的方式轻松连上单位的oracle数据库了。这一步实现起来并不难。
在简单的使用当中发生了以下几个比较有意思的意外:
- 发生了sql语句的意外终止:
library(RODBC)
channel <- odbcConnect(DSN,uid,pwd)
sql1 <- sqlQuery(channel, 'select * from Table while sampleno='sql'')
错误发生了。
查找了半天然后电话咨询了半天,最后发现了第一个错误:
while
oracle中应该是where。
- 在修改成where之后继续上述语句,然后继续报错,并且发现了R在解析sql语句的时候where后面的取值并不完整。你能发现错误在哪里吗?
sql1 <- sqlQuery(channel, 'select * from Table where sampleno='sql'')
经历多次修改后发现了问题:
sqlQuery里面的sql语句应该包括在一个双引号里面,而不是一个单引号,在我们日常的R code中单双引号一般都是在混用的,这是我第一次对单双引号的使用产生了谨慎。正确的用法应该是
sql1 <- sqlQuery(channel, "select * from Table while sampleno='sql'")
顺利完成了RODBC通过ODBC连接oracle数据库的第一次。