微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – RODBC中的varType用法

我通过RODBC包从ODBC写入sql Server表,特别是函数sqlSave.对于此函数,似乎认的var类型是charvar(255).我试图使用文档中列出的varTypes参数,但它失败了.

这是一个名为spikes20的表,具有Class结构,这反过来又是我试图通过sqlSave保存的

sapply(spikes20,class)
Date       Day       EWW       PBR       BAC      CHTP        FB       SPY 
"Date"  "factor" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric"

以下是尝试写入sql Server的代码

require(RODBC)
varTypes = c(as.Date="Date") 
channel <-odbcConnect("OptionsAnalytics",uid="me",pwd="you")

sqlSave (channel,spikes20,tablename = NULL,append=TRUE,rownames = FALSE,colnames = TRUE,safer = FALSE,addPK = FALSE,varTypes=varTypes )

我得到的错误消息说:

警告信息:

sqlSave中(channel,append = TRUE,:
列(s)as.Date’dat’不在’varTypes’的名称

我试图将varType更改为:

varTypes=c(Date="Date")

然后错误消息变为:

Error in sqlSave(channel,: 
  [RODBC] Failed exec in Update
22007 241 [Microsoft][ODBC sql Server Driver][sql Server]Conversion Failed when converting date and/or time from character string.

任何帮助将不胜感激.似乎我无法破译正确使用varTypes …

解决方法

首先,你真的想附加到名为NULL的表吗?

至于varTypes的问题,根据我的经验,我必须为数据框中的所有变量提供映射,即使varTypes argurment的文档说:

一个可选的命名字符向量,用于提供DBMS数据类型
如果要创建表,则部分(或全部)列“

您需要确保varTypes向量的名称是列名称,值是推荐的数据类型here.因此,按照他们的示例,您将拥有:

tmp <- sqlColumns(channel,correctTableName)
varTypes = as.character(tmp$TYPE_NAME)
names(varTypes) = as.character(tmp$COLUMN_NAME)

原文地址:https://www.jb51.cc/mssql/77187.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐