8.4 其他R包
通过前文了解,以下R包(RODBC除外)的作用仅仅是提供驱动即可,再通过DBI包与数据库交互。
8.4.1 RODBC包
RODBC包是R语言对ODBC数据库接口的封装,可连接所有的ODBC数据库,但是读写效率较低。
1.安装包
install.packages('RODBC')
2.SQL SERVER 数据库举例
library(RODBC)
<- odbcDriverConnect("driver={SQL Server};server=192.168.2.62;database=dbname;uid=zhongyf;pwd=Zyf123456")
con
con::sqlQuery(con,'select * from test') RODBC
`
- 怎样安装驱动
请参照驱动安装
ODBC for sql server driver 下载地址地址
3.数据库字符串
请参照数据库连接字符串
#ODBC Driver 17 for SQL Server
<- odbcDriverConnect("Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=name;UID=username;PWD=123456;") #server 数据库 UID 数据库账户 PWD 数据库账户密码 cn
sql server 请参照sql server连接字符串
8.4.2 ROracle包
在第一次安装这个包时遇到了很多困难,首先需要安装oracle客户端,其次配置好环境变量,最后安装包。R与Oracle的连接需要安装Oracle Instant Client,
- 安装客户端
安装oracle客户端,根据电脑的位数选择相应的32位或64位,根据要连接数据库版本,可以去官网自行下载,本机需要下载的客户端地址
- 配置环境变量
根据自己所使用的系统,配置环境变量
OCI_INC='D:\app\zhongyf\product\11.2.0\client_1\oci\include'
OCI_LIB64='D:\app\zhongyf\product\11.2.0\client_1\BIN'
- 安装包
安装Roracle包需要配置相应版本的Rtools并添加到环境变量,另外配置两个oracle的环境变量。代码中有注释,按照自己安装版本路径修改。
由于ROracle依赖于Oracle Instant Client,安装之前一定要先安装好客户端。
install.packages('ROracle')
- 连接数据库
Roracle
可以通过DBI
包链接,除了驱动和连接字符串有差异,其他部分一样。
library(ROracle)
<-dbDriver("Oracle")
drv <- '(DESCRIPTION =
connect.string (ADDRESS = (PROTOCOL = TCP)(HOST = 192.16.88.129)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bidev)
))' #连接字符串
<- dbConnect(drv,username = "query", password = "query",dbname = connect.string) con
- 乱码问题
如果连接oracle数据库,中文乱码设置以下环境变量即可,或者在启动文件配置该环境变量。
linux下可以在文件Renviron中添加,记得引号,路径为[/opt/R/4.0.2/lib/R/etc/Renviron]
# 查询数据库编码
userenv('language') from dual
select Sys.setenv(NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8")
由于ROracle包的安装存在一定难度,具体安装说明可以参考微信公众号-宇飞的世界R包ROracle安装
8.4.3 RMySQL包
RMySQL包的主要作用可以提供驱动与mysql数据库进行连接,在本机未安装mysql的驱动的情况下.该包正在逐渐被淘汰,可以使用RMariaDB包替换。
1.安装
Win系统下直接安装即可,其它平台下需提前安装依赖环境。
#On recent Debian or Ubuntu install libmariadbclient-dev
sudo apt-get install -y libmariadbclient-dev
#On Fedora, CentOS or RHEL we need mariadb-devel:
sudo yum install mariadb-devel
#On OS-X use mariadb-connector-c from Homebrew:
brew install mariadb-connector-c
install.packages('RMySQL')
2.连接使用
上述连接方式一致,仅仅是指驱动差异
library(RMySQL)
<- RMySQL::dbConnect(drv = RMySQL::MySQL(),host='localhost',dbname="mysql",username="root",password='123456') con
RMariaDB
包与RMySQL
包用法基本一致,在连接时注意驱动的选择即可。
install.packages('RMariaDB')
library(RMariaDB)
<- RMySQL::dbConnect(drv = RMariaDB::MariaDB() ,host='localhost',dbname="dbtest",username="root",password='123456') con
8.4.4 RSQLite
RSQLite是练习使用R中的数据库的最简单方法,因为程序包本身包含SQLite,无需任何外部软件。
1.安装
install.packages("RSQLite")
2.基础用法
library(DBI)
# 在内存中创建一个临时数据库
<- dbConnect(RSQLite::SQLite(), ":memory:")
con
dbListTables(con)
#> character(0)
dbWriteTable(con, "mtcars", mtcars)
dbListTables(con)
#> [1] "mtcars"
<- dbReadTable(con, "mtcars")
df head(df)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> 1 21.0 6 160 110 3.90 2.62 16.5 0 1 4 4
#> 2 21.0 6 160 110 3.90 2.88 17.0 0 1 4 4
#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
#> 4 21.4 6 258 110 3.08 3.21 19.4 1 0 3 1
#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
#> 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
<- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4")
res <- dbFetch(res)
df dbClearResult(res)
head(df)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> 1 22.8 4 108.0 93 3.85 2.32 18.6 1 1 4 1
#> 2 24.4 4 146.7 62 3.69 3.19 20.0 1 0 4 2
#> 3 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
#> 4 32.4 4 78.7 66 4.08 2.20 19.5 1 1 4 1
#> 5 30.4 4 75.7 52 4.93 1.61 18.5 1 1 4 2
#> 6 33.9 4 71.1 65 4.22 1.83 19.9 1 1 4 1
dbDisconnect(con)
基础用法与DBI功能一致。