作者augustana (微小的希望)
看板R_Language
标题[问题] RODBC汇入SQL Server中文乱码问题
时间Tue Feb 21 14:22:51 2017
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
新手(没写过程式,R 是我的第一次)
[问题叙述]:
我利用公司电脑(英文版作业系统)爬中文网站
利用Sys.setlocale(locale='cht')已经可以在R上面看到中文
也能正确汇入汇出繁体中文的csv (感温感温)
我现在要跑排程将资料直接送入我的SQL Server
不过发现原先在R上面的中文
这次送进SQL Server後又变乱码啦
这次是长这样的乱码 (#无档案时使用: 他会自己建立varchar的table)
aE?°|P¯f?U?|ao?O?I
或是这样的乱码 (#更新档案时使用: 先建好nvarchar的table)
Nªº¶W°ª¶¥1 qÄv
再麻烦大家了 谢谢!!
[程式范例]:
下方的无档案时使用跟更新档案时使用会择一使用
library(RODBC)
odbcconnect <- odbcConnect("MY_DB","trusted_connection=true")
values <- paste0( " article[ , c('", paste(colnames(article),collapse="','")
,"')] ", collapse="" )
sqlSave(odbcconnect, article, tablename = "subjectinfo_temp",
rownames = F) #无档案时使用
sqlSave(odbcconnect, article, tablename = "subjectinfo_temp",
rownames = F, append = T) #更新档案时使用
odbcClose(odbcconnect)
[环境叙述]:
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server >= 2012 x64 (build 9200)
locale:
[1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese
(Traditional)_Taiwan.950 LC_MONETARY=Chinese (Traditional)_Taiwan.950
[4] LC_NUMERIC=C LC_TIME=Chinese
(Traditional)_Taiwan.950
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RODBC_1.3-14 xml2_1.1.1
loaded via a namespace (and not attached):
[1] tools_3.3.2 Rcpp_0.12.9
[关键字]:
RODBC, SQL Server, 乱码
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.199.64
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1487658174.A.8C2.html
1F:→ cywhale: odbcConnect参数DBMSencoding设设看 02/22 08:59
2F:→ augustana: 设过惹 BIG5, UTF-8, WINDOWS-1252, gbk都乱码Q__Q 02/22 10:23
3F:推 cywhale: 如果用sql server driver? odbcDriverConnect('driver= 02/22 10:47
4F:→ cywhale: {SQL Server};server=...;...) 我自己这样用没遇过乱码 02/22 10:48
5F:→ augustana: 请问这时候的server就是我之前odbcconnect取好的那个 02/22 12:00
6F:→ augustana: "MY_DB"吗 他说不存在或access_denied 02/22 12:01
7F:→ augustana: odbcDriverConnect('driver={SQL Server};server="MY_D 02/22 12:02
8F:→ augustana: B";trusted_connection=true') 我是这样写 02/22 12:02
9F:→ augustana: 我server改成原始的server後成功惹~~ 不过还是乱码Q__Q 02/22 13:49
10F:→ augustana: 我在odbcDriverConnect上加DBMSencoding也没有用 然後 02/22 14:05
11F:→ augustana: 汇出csv要特别加fileEncoding = 'UTF-8'才会成功 02/22 14:06
12F:→ augustana: 更正 加了DBMSencoding後会变NULL 不管是是不是driver 02/22 14:10
13F:→ cywhale: 我觉得会不会是sql server设定而不是R连接sql server问题 02/22 16:18
14F:→ augustana: 我现在也有这感觉XD 我找到答案再更新 02/22 16:26
15F:→ augustana: 我刚看惹SQL设定 但他跟正常的中文表所有属性都一样 02/23 14:38
16F:→ augustana: 感觉应该是英文作业系统的关系 在R到SQL中间出了问题 02/23 14:39
17F:推 obarisk: 去找系统odbc驱动程式设定看看 02/25 06:52
18F:→ augustana: 如果是说ODBC资料来源管理员的话 是我设的 可是我看不 02/28 17:36
19F:→ augustana: 来应该检查哪边 02/28 17:36
20F:→ augustana: 我後来是直接存csv, 再让SQL去读csv(encoding设utf8) 07/26 16:15