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:是否为追加到已经存在表的数据

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

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

这里需要进行一些设置:

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

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

                                       安排。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LEEBELOVED

一分钱都是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值