R:使用 R 更新 SQL 表循环

Posted

技术标签:

【中文标题】R:使用 R 更新 SQL 表循环【英文标题】:R: Updating SQL table loop using R 【发布时间】:2015-07-21 14:36:29 【问题描述】:

我在 R 上使用 RODBC 包,它允许我使用 R 连接到 SQL。

作为我的问题的一个示例,我在 SQL 中有一个表 [Sales],其中包含 3 列(Alpha、Beta、BetaDistribution)。

1.50,77,x

2.99,53,x

4.50,122,x

请注意,第 3 列 (BetaDistribution) 未填充,需要使用统计 R 函数填充。


我已将我的表分配给变量 SELECT

select

如何运行循环来更新我的 sql 表,以便使用计算的 Beta 分布 - pbeta(alpha,beta) 更新 BetaDistribution 列

【问题讨论】:

您列出了四列,但将收入称为第三列而不是第四列。 【参考方案1】:

类似的东西。基本上你制作一个临时表,然后更新现有的表。您很有可能需要调整该更新语句,因为我显然无法对其进行测试。

select$BetaDistribution<-yourfunc(x,y)
sqlSave(dbhandle, select, tablename="dbo.salestemp", rownames=FALSE,varTypes=list(Alpha="decimal(10,10)", Beta="decimal(10,10)", BetaDistribution="decimal(10,10)"))
sqlQuery(dbhandle, "update dbo.sales 
                    set sales.BetaDistribution=salestemp.BetaDistribution 
                    from dbo.sales
                    inner join
                    salestemp
                    on
                    sales.Alpha=salestemp.Alpha and 
                    sales.Beta=salestemp.Beta")
sqlQuery(dbhandle, "drop table salestemp")

【讨论】:

谢谢...不过我只是简化了问题,以便以更简单的方式描述。也许不是最聪明的做法。 我需要从 sql 中获取一个变量并在 R 中应用一个 beta 分布......我想用 SQL 表中每一行的 beta 分布结果更新 SQL 表。 您应该更新您的问题以指定您想要使用任意 R 函数的结果而不是乘法来更新您的 sql 表。还包括您使用的数据库,因为答案将取决于此。 @SIMONHART 这是否满足您的需求?如果是这样,您会考虑接受答案吗? 确实...非常感谢您的帮助。被接受了吗?

以上是关于R:使用 R 更新 SQL 表循环的主要内容,如果未能解决你的问题,请参考以下文章

R将tbl对象更新为红移

无法在 R 中使用 sqlSave 追加到 SQL Server 表

使用 R 更新 SQL Server 中表的多个列

无法使用R中的sqlSave追加到SQL Server表

R - 使用 RODBC 更新 SQL Server 上的数据

SQL查询语法错误,使用另一个表的数据更新表[重复]