如何将数据框中的所有记录插入到R中的数据库中?

时间:2014-08-19 19:18:02

标签: r postgresql dataframe

我有一个数据框data_frm,其中包含以下列:

emp_id | emp_sal | emp_bonus | emp_desig_level
       |         |           |    
       |         |           |

我想将此数据框中存在的所有记录插入数据库表tab1。我执行了此查询但出现错误:

for(record in data_frm)
    {   
    write_sql <- paste("Insert into tab1 (emp_id,emp_sal,emp_bonus,emp_desig_level) values (",data_frm[,"emp_id"],",",data_frm[,"emp_sal"],",",data_frm[,"emp_bonus"],",",data_frm[,"emp_desig_level"],")",sep="") 
    r <- dbSendQuery(r,write_sql)   
    }

我收到错误:

Error in data_frm[, "emp_id"] : incorrect number of dimensions

如何将数据框中的所有记录插入数据库?

注意:我想使用insert语句插入数据框的所有记录。

3 个答案:

答案 0 :(得分:1)

dbWriteTable(conn, "RESULTS", results2000, append = T) # to protect current values
dbWriteTable(conn, "RESULTS", results2000, append = F) # to overwrite values

来自sourceforge的RDBI homepage。希望有所帮助...

答案 1 :(得分:1)

在for循环中,您需要输入:

data_frm[record,"column_name"]

其他方面,你的循环试图插入整个列,而不仅仅是特定的记录。

for(record in data_frm)
    {   
    write_sql <- paste("Insert into tab1 (emp_id,emp_sal,emp_bonus,emp_desig_level) values (",data_frm[record,"emp_id"],",",data_frm[record,"emp_sal"],",",data_frm[record,"emp_bonus"],",",data_frm[record,"emp_desig_level"],")",sep="") 
    r <- dbSendQuery(r,write_sql)   
    }

答案 2 :(得分:0)

已回答here

再复制一次:

最近我遇到了类似的问题。

问题描述:MS Server数据库带有方案。任务是将R data.frame对象保存到预定义的数据库表,而不会删除

我遇到的问题

  • 某些软件包功能不支持方案或需要安装github开发版本
  • 只有在 drop (删除表)操作(我只需要“清除表”操作)之后,才能保存data.frame。

我如何解决此问题

  • 使用简单的 RODBC :: sqlQuery ,逐行写入data.frame。
  • 该解决方案(几个功能)可用herehere