[问题] R连结MS_SQL资料格式问题

楼主: developme223 (allen)   2018-01-02 15:17:56
[问题类型]:
经验咨询(我想用R 连接某些数据库,请问大家的经验)
[软件熟悉度]:
使用者(已经有用R 做过不少作品)
[程式范例]:
建立重现错误的方法可以参考:
[问题类型]:
经验咨询(我想用R 连接某些数据库,请问大家的经验)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
因某些需求,须利用R套件RODBC连结SQL数据库,但连接后发现,Rstudio会把字段判断为
数字导致若开头为0的字串皆不会显示,例如:字段HospSeqNo本应为:01、00,却显示
为1、0。
如下:
语法:https://imgur.com/a/qoL24
资料表:https://imgur.com/79w2oMw
已在MS_SQL建立表格时,字段格式设定为字串CHAR,但上述问题仍会发生。
MsSQL语法如下:
语法:https://imgur.com/zhBMqFQ
资料表:https://imgur.com/LaSoxPZ
恳求版上高手能提供解决方法,十分感谢!
[程式范例]:
[环境叙述]:
R版本: 3.2.1
本机:WIN10
[关键字]:
MsSQL、Rstudio
作者: andrew43 (讨厌有好心推文后删文者)   2018-01-02 15:38:00
google 一下,算是常见的问题,可以试试 as.is 这项参数以及stringsAsFactors这项参数。看来和你的database本身没有关系,单纯是R function这边调整好即可。也有人直接强制query时让id预先加上前后缀文字符,避开这个麻烦,之后在R中再额外处理。更正,as.is和stringsAsFactors应与你的情况无关,我没看清楚。
作者: celestialgod (天)   2018-01-02 15:44:00
试试看其他套件,例如RMySQL
作者: carl090105 (Jing)   2018-01-02 21:10:00
SQLserver 的话试试看走jdbc
作者: cywhale (cywhale)   2018-01-02 23:59:00
试试看读出来就直接家前缀词 select distinct ('xx_' +HospSeqNo), CaseNo, Birthday from YourTable"加" (错字) 加在你的sqlQuery
作者: obarisk (OSWALT)   2018-01-03 01:05:00
是as. is没有错吧
作者: andrew43 (讨厌有好心推文后删文者)   2018-01-03 07:58:00
我依稀记得as.is可以,但看手册又不像。请原PO试试看了。
楼主: developme223 (allen)   2018-01-03 11:51:00
感谢各位,已参考an大提供的方法在sqlQuery加引数as.is = T,sqlQuery(,as.is = T)已解决。不过若常常要汇出资料,write.table()仍存在此问题除了字符前加缀词之外,我暂时是用write.csv()转txt档,再贴至excel(储存格选择文字格式)而且字段很多的话,加缀词还蛮麻烦的。
作者: andrew43 (讨厌有好心推文后删文者)   2018-01-03 17:03:00
注意一下write.table()后的问题是txt/csv不正确还是试算表软件“自作主张”造成的。因为write.csv针对chr类型默认会包上双引号,excel可能自动忽视了造成麻烦
楼主: developme223 (allen)   2018-01-03 17:24:00
了解,主要是想转Excel档出来,但不管是用write.csv(Sampling, file = "Sampling.csv")或write.table(Sampling, file = "Sampling.csv",sep = ",", col.names = T,row.names=F )汇出的档案皆存在最初的问题,所以好像只能转txt档
作者: obarisk (OSWALT)   2018-01-04 06:29:00
用xlsx或是openxlsx直接写excel

Links booklink

Contact Us: admin [ a t ] ucptt.com