8.4 其他R包
通过前文了解,以下R包(RODBC除外)的作用仅仅是提供驱动即可,再通过DBI包与数据库交互。
8.4.1 RODBC包
RODBC包是R语言对ODBC数据库接口的封装,可连接所有的ODBC数据库,但是读写效率较低。
1.安装包
install.packages('RODBC')2.SQL SERVER 数据库举例
library(RODBC)
con <- odbcDriverConnect("driver={SQL Server};server=192.168.2.62;database=dbname;uid=zhongyf;pwd=Zyf123456")
con
RODBC::sqlQuery(con,'select * from test')`
- 怎样安装驱动
 
请参照驱动安装
ODBC for sql server driver 下载地址地址
3.数据库字符串
请参照数据库连接字符串
#ODBC Driver 17 for SQL Server
cn <- odbcDriverConnect("Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=name;UID=username;PWD=123456;") #server 数据库 UID 数据库账户 PWD 数据库账户密码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)
drv <-dbDriver("Oracle")
connect.string <- '(DESCRIPTION =
                    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.16.88.129)(PORT = 1521))
                  (CONNECT_DATA =
                      (SERVER = DEDICATED)
                    (SERVICE_NAME = bidev)
                  ))' #连接字符串
con <- dbConnect(drv,username = "query", password = "query",dbname = connect.string)- 乱码问题
 
如果连接oracle数据库,中文乱码设置以下环境变量即可,或者在启动文件配置该环境变量。
linux下可以在文件Renviron中添加,记得引号,路径为[/opt/R/4.0.2/lib/R/etc/Renviron]
# 查询数据库编码
select userenv('language') from dual
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-cinstall.packages('RMySQL')2.连接使用
上述连接方式一致,仅仅是指驱动差异
library(RMySQL)
con <- RMySQL::dbConnect(drv = RMySQL::MySQL(),host='localhost',dbname="mysql",username="root",password='123456')RMariaDB包与RMySQL包用法基本一致,在连接时注意驱动的选择即可。
install.packages('RMariaDB')
library(RMariaDB)
con <- RMySQL::dbConnect(drv = RMariaDB::MariaDB() ,host='localhost',dbname="dbtest",username="root",password='123456')8.4.4 RSQLite
RSQLite是练习使用R中的数据库的最简单方法,因为程序包本身包含SQLite,无需任何外部软件。
1.安装
install.packages("RSQLite")2.基础用法
library(DBI)
# 在内存中创建一个临时数据库
con <- dbConnect(RSQLite::SQLite(), ":memory:")
dbListTables(con)
#> character(0)dbWriteTable(con, "mtcars", mtcars)
dbListTables(con)
#> [1] "mtcars"df <- dbReadTable(con, "mtcars")
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    1res <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4")
df <- dbFetch(res)
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功能一致。