【问题标题】:Issues with sqlSave in R?R中的sqlSave问题?
【发布时间】: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 编程。任何见解将不胜感激。

【问题讨论】:

    标签: sql sql-server r sql-server-2012 rodbc


    【解决方案1】:

    想出了一个解决办法。

    对于循环的第一次迭代,我使用了以下命令:

    sqlSave(conn, dat = df, rownames = FALSE)
    

    对于循环的第 2 次到第 n 次,我使用了以下命令:

    sqlSave(conn, dat = df, append = TRUE, rownames = FALSE)
    

    这为我在数据库 [PL_DEV] 中创建了一个表 [dbo].[df](因为我将 RODBC 直接设置到该数据库)。

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 2013-04-01
      • 2014-07-17
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多