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 FLOATY FLOATZ FLOATU FLOAT .主键已添加到 STYEAR 列。

从那里,我建立了一个 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 进行查询?

RODBC sqlSave 崩溃 R 前端

如何使用 R 中的函数 sqlSave() 将数据附加到具有 IDENTITY 主键的 SQL Server 表中?

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

sqlSave 在 R 中创建数据框并将其保存到 sql 表

RODBC sqlSave() 和映射列名