R中sqlSave的问题?

时间:2015-03-11 16:51:52

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

我已经阅读了有关此问题的先前问题/答案,但似乎没有人回答我的问题。我的最终目标是将R中的数据导入SQL表。

在尝试这样做时,我首先使用以下列在Microsoft SQL Server 2012中创建了表[PL_DEV].[PL_A].[X]ST VARCHAR(10)YEAR VARCHAR(10)Intercept FLOAT,{{1 },Y FLOATZ FLOAT。主键已添加到U FLOATST列。

从那里,我建立了一个RODBC连接,我打电话给YEAR

设置完毕后,我创建了一个名为conn的数据框,对于第一行数据看起来像这样:

df

设置完成后,我尝试将此数据框( ST YEAR INTERCEPT Y Z U "01" "2009" -50012.37 0.6341358 16569.52 61.42544 )中的数据插入到我创建的SQL表(df)中。我尝试用以下声明来做到这一点:

[PL_DEV].[PL_A].[X]

我设置sqlSave(conn, dat = df, tablename = "[PL_DEV].[PL_A].[X]", append = TRUE, rownames = FALSE) 以便它不会创建表,而是插入数据并设置append = TRUE,这样就不会添加额外/不必要的列。

但是,当我执行上面的语句时,我收到以下错误:

  

sqlSave中的错误(conn,df,tablename =“[PL_DEV]。[PL_A]。[X]”,:   42S01 2714 [Microsoft] [SQL Server Native Client 11.0] [SQL Server]   数据库中已经有一个名为“X”的对象。   [RODBC]错误:无法SQLExecDirect'创建表[PL_DEV]。[PL_A]。[X]
  (“ST”varchar(255),“YEAR”varchar(255),“INTERCEPT”float,“Y”float,   “Z”浮动,“U”浮动)'

如果执行以下操作,我可以将数据插入到SQL表中(rownames = FALSE更具体):

[master].[dbo].[df]

但是,一旦数据出现在此表中,就会出现同样的问题,我无法在表格中插入更多数据。

有谁知道我做错了什么或其他能为我做同样事情的功能?我刚开始在上周开始编程。任何见解将不胜感激。

1 个答案:

答案 0 :(得分:1)

找出解决方法。

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

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

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

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

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