在R中通过RODBC包访问数据库,这个方式可以连接任何一种拥有odbc驱动的数据库。安装RODBC包的安装命令install.packages("RODBC")
PS:连接数据库前需要在ODBC数据源管理器里将需要的数据库添加进去,本人oracle 数据库 ,如下添加 数据源orcl
安装好RODBC包后开始连接数据库:
> library(RODBC)
> myconn <- odbcConnect("orcl", uid="xxx", pwd="xxx")
sqlFetch(myconn, "TEST1")
在读表时遇到了如下错误:
错误于.Call(C_RODBCFetchRows, attr(channel, "handle_ptr"), max, buffsize, :
不能有负长度矢量
后来在这里http://*.com/questions/3407015/querying-oracle-db-from-revolution-r-using-rodbc找到了解决方案
在数据库建立连接时believeNRows=FALSE ,如下:
> myconn <- odbcConnect(dsn="orcl", uid="xxx", pwd="xxx", believeNRows=FALSE )
> sqlFetch(myconn, "TEST1")
ID
1 1
2 2
3 3
PS:表名大小写敏感
当然也可以将表里的数据赋值给变量
> testDat <- sqlFetch(myconn, "TEST1")
> testDat
ID
1 1
2 2
3 3
向数据库提交条件查询并返回结果
> serDat <- sqlQuery(myconn, "select * from test1 where id = '1'")
> serDat
ID
1 1
关闭连接
> close(myconn)