[英]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.