R语言连接MySQL读写中文数据乱码问题解决方案

R语言在对中文的读写上是有点不友好,估计也是众多R语言使用者吐槽的点。

 

Rstudio连接mysql可以通过RMySQL和RODBC连接,通常对于非中文的数据读写、分析都不会出现问题,但是遇到中文的时候问题就来了。

对于R连接MySQL读取中文或者写入中文数据的时候乱码问题,这里给出的解决方案如下:

1、通过RODBC包进行读取,可以完美解决(相对来说,odbc的连接方式比RMysql更加稳定)

同时需要注意的几点:

1.1、MySQL数据库中所建立的database字符编码要与odbc环境配置中的一致(character set);

1.2、在R中连接的代码语句中同样需要设置DBMSencoding="utf-8";

1.3、需要下载与你的mysql版本匹配的odbc驱动,并进行odbc配置;

        配置里面:data source name:这是你在R中连接的名称,如我下面的per

       tcp/ip server:你安装的是本地的就是localhost,若是连接的远程的就是相应的名称或者地址

con<- odbcConnect("per",uid="root",pwd="xxxxxx",DBMSencoding="utf-8")
#查看数据库中的表
sqlTables(con) 
#用数据库中的表测试下看中文是否显示正常
sqlQuery(con,'select * from xxx')

通过R向MySQL写入数据(注意:若通过sqlSave向mysql中写入大量数据会很慢,建议用dbwritetable)

sqlSave(channel, data,  append = FALSE,
        rownames = TRUE,addPK = FALSE,
        fast = TRUE)

主要参数: 

channel:连接数据库的名称

data:需要写入的数据

append:是否为追加到已经存在表的数据

R语言连接MySQL读写中文数据乱码问题解决方案_第1张图片R语言连接MySQL读写中文数据乱码问题解决方案_第2张图片

2、通过RMysql包进行读取(这个没那么稳定,比较容易读写错误,但优点是不需要像odbc那样麻烦配置环境,并且在读写速度上会快些)

对于中文的不友好这个包体现的很具体哦

这里需要进行一些设置:

首先你在mysql中所建的数据库的字符编码一定不要像网上很多说的那样设置为utf-8,R中也这样设置,这样你会很惨;

其次小编通过反复测试,屡试不爽,将数据库中和R中的编码均设置为gbk,这样完美的解决了,中文读写乱码的问题。

                                       安排。

 

你可能感兴趣的:(R语言,实用随笔,R语言,中文乱码,中文数据读写,mysql报错)