作者developme223 (allen)
看板R_Language
标题[问题]R连结MS_SQL资料格式问题
时间Tue Jan 2 15:17:56 2018
[问题类型]:
经验谘询(我想用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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.243.91.235
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1514877479.A.3A9.html
1F:→ andrew43: google 一下,算是常见的问题,可以试试 as.is 这项参数 01/02 15:38
2F:→ andrew43: 以及stringsAsFactors这项参数。看来和你的database本身 01/02 15:40
3F:→ andrew43: 没有关系,单纯是R function这边调整好即可。 01/02 15:41
4F:→ andrew43: 也有人直接强制query时让id预先加上前後缀文字符,避开 01/02 15:43
5F:→ andrew43: 这个麻烦,之後在R中再额外处理。 01/02 15:43
6F:→ andrew43: 更正,as.is和stringsAsFactors应与你的情况无关,我没 01/02 15:44
7F:→ andrew43: 看清楚。 01/02 15:44
8F:推 celestialgod: 试试看其他套件,例如RMySQL 01/02 15:44
9F:→ carl090105: SQLserver 的话试试看走jdbc 01/02 21:10
10F:推 cywhale: 试试看读出来就直接家前缀词 select distinct ('xx_' + 01/02 23:59
11F:→ cywhale: HospSeqNo), CaseNo, Birthday from YourTable 01/03 00:00
12F:→ cywhale: "加" (错字) 加在你的sqlQuery 01/03 00:01
13F:推 obarisk: 是as. is没有错吧 01/03 01:05
14F:→ andrew43: 我依稀记得as.is可以,但看手册又不像。请原PO试试看了 01/03 07:58
15F:→ andrew43: 。 01/03 07:58
16F:→ developme223: 感谢各位,已参考an大提供的方法在sqlQuery加引数 01/03 11:51
17F:→ developme223: as.is = T,sqlQuery(,as.is = T)已解决。 01/03 11:53
18F:→ developme223: 不过若常常要汇出资料,write.table()仍存在此问题 01/03 16:58
19F:→ developme223: 除了字元前加缀词之外,我暂时是用write.csv()转 01/03 17:00
20F:→ developme223: txt档,再贴至excel(储存格选择文字格式) 01/03 17:01
21F:→ developme223: 而且栏位很多的话,加缀词还蛮麻烦的。 01/03 17:03
22F:→ andrew43: 注意一下write.table()後的问题是txt/csv不正确还是试算 01/03 17:03
23F:→ andrew43: 表软体「自作主张」造成的。 01/03 17:04
24F:→ andrew43: 因为write.csv针对chr类型预设会包上双引号,excel可能 01/03 17:08
25F:→ andrew43: 自动忽视了造成麻烦 01/03 17:09
26F:→ developme223: 了解,主要是想转Excel档出来,但不管是用 01/03 17:24
27F:→ developme223: write.csv(Sampling, file = "Sampling.csv") 01/03 17:24
28F:→ developme223: 或 01/03 17:25
29F:→ developme223: write.table(Sampling, file = "Sampling.csv" 01/03 17:25
30F:→ developme223: ,sep = ",", col.names = T,row.names=F ) 01/03 17:25
31F:→ developme223: 汇出的档案皆存在最初的问题,所以好像只能转txt档 01/03 17:27
32F:→ obarisk: 用xlsx或是openxlsx直接写excel 01/04 06:29