数据帧(R对象)持久存入数据库

时间:2014-06-10 08:38:20

标签: r database

我有一个数据库表让我们说表1.表1有10列让我们假设: 列1,列2,栏3,column4,column5,column6,column7,column8,column9,column10 ... 我有一个数据框

sample_frame<-data.frame(column1=1,column2=2,column3=3,column4=4)

我希望将数据帧(即sample_frame)保存到我的数据库表中,即表1。 目前我正在使用ROracle包写入数据库。我使用的代码如下:

library(ROracle)
dbWriteTable(con, name="Table 1", value=sample_frame, row.names = FALSE, 
               overwrite = FALSE,append = TRUE,  schema ="sample_schema")

我使用dbConnect()创建了连接对象,就表1的完整性和空约束而言,我已经处理过了。当我尝试使用dbWriteTable()写入表时,会抛出以下错误:

"ORA-00947: not enough values" 

有人可以更正我正在使用的方法,或者为我提供另一种方法,将选择性列(不可空列)插入表1,同时将其他列留空。我正在使用R 2.15.3

1 个答案:

答案 0 :(得分:0)

正如我在评论中提到的,您正在创建具有较少列数的sample_frame,您将收到此错误...尝试此操作(如果您在数据库中的实际表具有相同的列名称)

sample_frame<-data.frame(column1=1,column2=2,column3=3,column4=4,
                         column5=5,column6=6,column7=7,column8=8,
                         column9=9,column10=10)
library(ROracle)
dbWriteTable(con, name="Table 1", value=sample_frame, row.names = FALSE, 
               overwrite = FALSE,append = TRUE,  schema ="sample_schema")

<强>更新

考虑到您的新要求,我建议您准备一个查询并使用以下

qry = #You update query
dbSendQuery(con, qry)