繁体   English   中英

保存的数据框未在 sql server 中正确显示

[英]saved data frame is not shown correctly in sql server

我有名为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 时,列没有以正确的格式显示,它们是这样的; 在此处输入图片说明

当我在sqlSave函数中将fast设置为FALSE ,出现此错误;

sqlSave(dbhandle, Distbars, tablename = "DistBars", verbose = T, : 22001 8152 [Microsoft][ODBC SQL Server Driver][SQL Server]字符串或二进制数据将被截断。01000 3621 [Microsoft][ODBC SQL服务器驱动程序][SQL Server]语句已终止。[RODBC] 错误:无法 SQLExecDirect 'INSERT INTO "DistBars" ( "regsub", "week", "S", "A", "F", "labeled_cluster" ", "subgroup", "windows" ) VALUES ( 'ظâ€', 5, 4, 2, 3, 'cl1', 'طظâ€|ظ„ ط²ط¨ Ø·§Ø¸â€žØ¸â€¡', 1 )'

我还在表的设计中为utf-8列尝试了NVARCHAR(MAX)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; to 连接字符串也不起作用。

我在我的代码中遇到了同样的问题,我设法修复了它,从我的连接配置中消除了rows_at_time = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM