我有一个名为distTest的数据框架,它有UTF-8格式的列。我想将distTest保存为sql database中的表。我的代码如下;
library(RODBC)
load("distTest.RData")
Sys.setlocale("LC_CTYPE", "persian")
dbhandle <- odbcDriverConnect('driver={SQL Server};server=****;database=TestDB;
trusted_connection=true',DBMSencoding="UTF-8" )
Encoding(distTest$regsub)<-"UTF-8"
Encoding(distTest$subgroup)<-"UTF-8"
sqlSave(dbhandle,distTest,
tablename = "DistBars", verbose = T, rownames = FALSE, append = TRUE)我考虑DBMSencoding作为我的连接,编码Encoding(distTest$regsub)<-"UTF-8" Encoding(distTest$subgroup)<-"UTF-8"作为我的列。但是,当我将它保存到sql中时,列没有以正确的格式显示,它们是这样的;

当我将fast在sqlSave函数中设置为FALSE时,我得到了这个错误;
sqlSave中的错误(dbhandle、Distbars、tablename = "DistBars“、DistBars= T、:22001 8152 MicrosoftSQL ServerString或二进制数据)将被截断。01000 3621 MicrosoftSQL ServerThe语句已被终止。RODBC错误:无法将SQLExecDirect‘插入"DistBars“( "regsub”、"week“、"S”、"A“、"F”、"labeled_cluster“、”子组“、"windows”)值( 'cl1’、5、4、2、3、‘CL1’、‘·厄斯欧罗’、欧罗巴·奥朗德·奥朗德·奥朗德·奥朗德·奥朗德·奥朗德·奥萨罗·奥朗德·奥瑟罗·奥朗德·奥朗德·奥朗德·奥朗德·奥萨罗·奥朗德·奥朗德
我还尝试了NVARCHAR(MAX)对utf-8列的设计,在表的设计中fast=false的错误消失了,但是同样的错误与格式相同。
顺便说一句,一部分数据是以RData的形式在这里中导出的。
我想知道为什么数据格式在sql server 2016中没有正确显示
更新
我完全确信,RODBC包有问题。我试着用sqlQuery(channel = dbhandle,"insert into DistBars values(N'7من',NULL,NULL,NULL,NULL,NULL,NULL,NULL)")插入表
作为一种测试,格式仍然是错误的。不幸的是,将CharSet=utf8;添加到连接字符串也不起作用。
发布于 2021-03-03 15:48:59
我的代码中也有同样的问题,我设法修复了它,消除了连接配置中的rows_at_time = 1。
https://stackoverflow.com/questions/43863462
复制相似问题