保存的数据框未在 sql server 中正确显示
Posted
技术标签:
【中文标题】保存的数据框未在 sql server 中正确显示【英文标题】:saved data frame is not shown correctly in sql server 【发布时间】:2017-05-09 07:15:09 【问题描述】:我有一个名为 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 驱动程序][SQL 服务器]字符串或二进制数据将被截断。 01000 3621 [Microsoft][ODBC SQL Server Driver][SQL Server]声明已经 终止。 [RODBC] 错误:无法 SQLExecDirect 'INSERT INTO “DistBars”(“regsub”、“week”、“S”、“A”、“F”、“labeled_cluster”、 "子组", "windows" ) 值 ('ظâ€', 5, 4, 2, 3, 'cl1', 'Ø·Âظ…ظ„ Ø··²Ø·····················',1)'
我还在表格设计中尝试NVARCHAR(MAX)
utf-8
列,fast=false
错误消失了,但格式相同。
顺便把here中的一部分数据导出为RData
。
我想知道为什么sql server 2016
中的数据格式显示不正确?
更新
我完全确信RODBC
包有问题。
我尝试通过
sqlQuery(channel = dbhandle,"insert into DistBars
values(N'7من',NULL,NULL,NULL,NULL,NULL,NULL,NULL)")
作为测试,格式仍然错误。不幸的是,将CharSet=utf8;
添加到连接字符串也不起作用。
【问题讨论】:
我对@987654343@ 一无所知,但是Sql Server 的nvarchar / nchar 用于unicode 值。我敢打赌,问题出在字符串到达 sql server 之前,正如错误消息所暗示的那样。 感谢@ZoharPeled,但我将 Nvarchar 用于 utf-8 列。我同意你关于出口前的问题。 【参考方案1】:我在我的代码中遇到了同样的问题,我设法解决了它,从我的连接配置中消除了rows_at_time = 1
。
【讨论】:
以上是关于保存的数据框未在 sql server 中正确显示的主要内容,如果未能解决你的问题,请参考以下文章
Ajax AutoCompleteExtender文本框未在边缘浏览器中触发文本更改事件
schemacrawler 未在 MS sql server db 的图形选项中显示关系/边