我尝试使用以下代码将R数据帧保存回sql数据库:
channel <- odbcConnect("db")
sqlSave(db, new_data, '[mydb].[dbo].mytable', fast=T, rownames=F, append=TRUE)
但是,这会返回在通道&#34;上找不到的错误&#34;表,同时创建一个包含列名的空表。重新运行代码会返回错误&#34;已经有一个名为&#39; mytable&#39;在数据库&#34;。这继续循环 - 有人能发现错误吗?
答案 0 :(得分:1)
这是关于您的数据集的样子吗?
MemberNum x t.x T.cal m.x T.star h.x h.m.x e.trans e.spend
1 2.910165e+12 0 0 205 8.77 52 0 0 0.0449161
我有几次这个确切的问题。它与在频道上找不到的表无关。根据我的经验,sqlSave在日期和科学记数法方面存在问题。尝试将x转换为因子:
new_data$x = as.factor(new_data$x)
然后是sqlSave。如果这不起作用,请尝试as.numeric
甚至as.character
(即使这不是您想要的格式。
答案 1 :(得分:0)
第一次尝试运行sqlTables(db)
来检查数据库中的表及其正确的名称。
然后,您可以使用此函数返回值作为sqlSave(...)
答案 2 :(得分:0)
似乎您正在尝试写入SQL Server。如果在ODBC连接中指定数据库名称,然后将该表称为“ dbo.mytable”,则可能会有所帮助。