我已经阅读了有关此问题的先前问题/答案,但似乎没有人回答我的问题。我的最终目标是将R中的数据导入SQL表。
在尝试这样做时,我首先使用以下列在Microsoft SQL Server 2012中创建了表[PL_DEV].[PL_A].[X]
:ST VARCHAR(10)
,YEAR VARCHAR(10)
,Intercept FLOAT
,{{1 },Y FLOAT
,Z FLOAT
。主键已添加到U FLOAT
,ST
列。
从那里,我建立了一个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]
但是,一旦数据出现在此表中,就会出现同样的问题,我无法在表格中插入更多数据。
有谁知道我做错了什么或其他能为我做同样事情的功能?我刚开始在上周开始编程。任何见解将不胜感激。
答案 0 :(得分:1)
找出解决方法。
对于循环的第一次迭代,我使用了以下命令:
sqlSave(conn, dat = df, rownames = FALSE)
对于循环的迭代2到n,我使用了以下命令:
sqlSave(conn, dat = df, append = TRUE, rownames = FALSE)
这为我创建了数据库[PL_DEV]中的表[dbo]。[df](因为我将RODBC直接设置到该数据库)。