sql server

时间:2017-05-09 07:15:09

标签: sql sql-server r utf-8 rodbc

我的数据框名为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时,列的格式不正确,它们是这样的; enter image description here

当我将fast函数中的sqlSave设置为FALSE时,我收到此错误;

  

sqlSave中的错误(dbhandle,Distbars,tablename =“DistBars”,verbose =   T,:22001 8152 [Microsoft] [ODBC SQL Server驱动程序] [SQL   服务器]字符串或二进制数据将被截断。 01000 3621   [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]语句已经过   终止。 [RODBC]错误:无法SQLExecDirect'插入   “DistBars”(“regsub”,“week”,“S”,“A”,“F”,“labeled_cluster”,   “subgroup”,“windows”)VALUES('ظ',5,4,2,3,'cl1','Ø·Âظ¸|¸¸€   Ø·ØØ··············,1)'

我在NVARCHAR(MAX)表的utf-8列中尝试了fast=false RData错误消失,但格式错误相同。

顺便说一下,部分数据会在here中导出为sql server 2016

我想知道为什么数据格式在RODBC中没有正确显示?

更新

我完全相信sqlQuery(channel = dbhandle,"insert into DistBars values(N'7من',NULL,NULL,NULL,NULL,NULL,NULL,NULL)")包有问题。 我试着插入表格 CharSet=utf8;

作为测试,格式仍然是错误的。不幸的是,将---> System.InvalidCastException: Unable to cast object of type '' to type 'System.String'. at System.Data.DataColumn.IsMaxLengthViolated() at System.Data.DataTable.EnableConstraints() at System.Data.DataTable.EndLoadData() at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) at System.Data.DataTable.Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler) 添加到连接字符串不起作用。

1 个答案:

答案 0 :(得分:0)

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