sqlUpdate returns 更新 table 从数据库读取时出现错误“[RODBC] 更新执行失败”
sqlUpdate returns error "[RODBC] Failed exec in Update" when updating table read from DB
我正在创建一个 table 并使用 RODBC 将其写入数据库。没问题。
首先,我尝试更新 R 中的 table,并在初始化它时在同一个 R 脚本和同一个 R 会话中使用 sqlUpdate 逐行写回更新。没问题。
但是当我尝试将其拆分为两个脚本时(一个用于初始化 table 另一个用于将其读回 R,计算更新并将更新写入数据库),我收到以下错误(导入和更新工作正常,只是将其写回失败的数据库):
[RODBC] Failed exec in Update
我用来更新的代码如下(当 table 在我的 R 会话中并且初始化和更新在同一个脚本中时有效):
conOut <- odbcConnect("myDB", uid = "myID", pwd = "myPwd", believeNRows = T)
sqlUpdate(conOut, myTable)
odbcClose(conOut)
我是否只是遗漏了一些非常明显的东西,比如 table 在从数据库导入时被转换为错误的格式?或者我还能做些什么来让它发挥作用?
干杯。
我找到了一个解决方法,虽然它实际上并没有回答我最初的问题:
我没有使用 sqlUpdate
,而是从 R 中的 table 中挑选出更新值,并使用 sqlQuery
和一个更新语句,在该语句中我将所有相关条目设置为新值:
observedString <- paste("[Observed] = ", obs)
differenceString <- paste("[Difference] = ", myTable$Difference[n])
shapiroString <- paste("[pValueShapiroWilks] = ", myTable$pValueShapiroWilks[n])
...
clauseString <- paste0("rownames = '", myTable$rownames[n], "'")
updateString <- paste0("UPDATE [myDB].[dbo].[myTable]
SET ",
observedString, ", ",
differenceString, ", ",
shapiroString, ", ",
ljungBoxString, ", ",
adfString, ", ",
warningString, ", ",
changeString,
" WHERE " , clauseString)
conOut <- odbcConnect("myDB", uid = "myID", pwd = "myPwd", believeNRows = T)
sqlQuery(conOut, updateString)
这非常有效。
不过,我还是想知道为什么sqlUpdate
命令不起作用...
我正在创建一个 table 并使用 RODBC 将其写入数据库。没问题。
首先,我尝试更新 R 中的 table,并在初始化它时在同一个 R 脚本和同一个 R 会话中使用 sqlUpdate 逐行写回更新。没问题。
但是当我尝试将其拆分为两个脚本时(一个用于初始化 table 另一个用于将其读回 R,计算更新并将更新写入数据库),我收到以下错误(导入和更新工作正常,只是将其写回失败的数据库):
[RODBC] Failed exec in Update
我用来更新的代码如下(当 table 在我的 R 会话中并且初始化和更新在同一个脚本中时有效):
conOut <- odbcConnect("myDB", uid = "myID", pwd = "myPwd", believeNRows = T)
sqlUpdate(conOut, myTable)
odbcClose(conOut)
我是否只是遗漏了一些非常明显的东西,比如 table 在从数据库导入时被转换为错误的格式?或者我还能做些什么来让它发挥作用?
干杯。
我找到了一个解决方法,虽然它实际上并没有回答我最初的问题:
我没有使用 sqlUpdate
,而是从 R 中的 table 中挑选出更新值,并使用 sqlQuery
和一个更新语句,在该语句中我将所有相关条目设置为新值:
observedString <- paste("[Observed] = ", obs)
differenceString <- paste("[Difference] = ", myTable$Difference[n])
shapiroString <- paste("[pValueShapiroWilks] = ", myTable$pValueShapiroWilks[n])
...
clauseString <- paste0("rownames = '", myTable$rownames[n], "'")
updateString <- paste0("UPDATE [myDB].[dbo].[myTable]
SET ",
observedString, ", ",
differenceString, ", ",
shapiroString, ", ",
ljungBoxString, ", ",
adfString, ", ",
warningString, ", ",
changeString,
" WHERE " , clauseString)
conOut <- odbcConnect("myDB", uid = "myID", pwd = "myPwd", believeNRows = T)
sqlQuery(conOut, updateString)
这非常有效。
不过,我还是想知道为什么sqlUpdate
命令不起作用...