作者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/m.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