R中的sqlSave问题?
Posted
技术标签:
【中文标题】R中的sqlSave问题?【英文标题】:Issues with sqlSave in R? 【发布时间】:2015-03-11 16:51:52 【问题描述】:我已阅读有关此问题的先前问题/答案,但似乎没有人回答我的问题。我的最终目标是将数据从 R 获取到 SQL 表中。
为此,我首先在 Microsoft SQL Server 2012 中创建了表 [PL_DEV].[PL_A].[X]
,其中包含以下列:ST VARCHAR(10)
、YEAR VARCHAR(10)
、Intercept FLOAT
、Y FLOAT
、Z FLOAT
、U FLOAT
.主键已添加到 ST
、YEAR
列。
从那里,我建立了一个 RODBC 连接,我称之为conn
。
设置完成后,我为第一行数据创建了一个名为 df
的数据框:
ST YEAR INTERCEPT Y Z U
"01" "2009" -50012.37 0.6341358 16569.52 61.42544
设置完成后,我尝试将此数据框 (df
) 中的数据插入到我创建的 SQL 表 ([PL_DEV].[PL_A].[X]
) 中。我试图用以下语句做到这一点:
sqlSave(conn, dat = df, tablename = "[PL_DEV].[PL_A].[X]", append = TRUE, rownames = FALSE)
我设置了append = TRUE
,这样它就不会创建表,而是插入数据,还设置了rownames = FALSE
,这样它就不会添加额外/不必要的列。
但是,当我执行上面的语句时,我得到了以下错误:
sqlSave(conn, df, tablename = "[PL_DEV].[PL_A].[X]", 中的错误: 42S01 2714 [Microsoft][SQL Server Native Client 11.0][SQL Server] 数据库中已经有一个名为“X”的对象。 [RODBC] 错误:无法 SQLExecDirect 'CREATE TABLE [PL_DEV].[PL_A].[X] (“ST” varchar(255),“YEAR” varchar(255),“拦截”浮点数,“Y”浮点数, “Z”浮动,“U”浮动)'
如果我执行以下操作,我可以将数据插入到 SQL 表中(更具体地说是[master].[dbo].[df]
):
sqlSave(conn, dat = df)
但是,一旦数据在此表中,就会出现同样的问题,我无法在表中插入更多数据。
有谁知道我做错了什么或另一个功能会为我做同样的事情?上周我刚开始用 R 编程。任何见解将不胜感激。
【问题讨论】:
【参考方案1】:想出了一个解决办法。
对于循环的第一次迭代,我使用了以下命令:
sqlSave(conn, dat = df, rownames = FALSE)
对于循环的第 2 次到第 n 次,我使用了以下命令:
sqlSave(conn, dat = df, append = TRUE, rownames = FALSE)
这为我在数据库 [PL_DEV] 中创建了一个表 [dbo].[df](因为我将 RODBC 直接设置到该数据库)。
【讨论】:
以上是关于R中的sqlSave问题?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 R 中的函数 sqlSave() 将数据附加到具有 IDENTITY 主键的 SQL Server 表中?