我有一个数据库表让我们说表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
答案 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)