如何正确使用dbWriteTable(2)?

如何正确使用dbWriteTable(2)?,r,R,我已经开始使用这些软件包 require(RPostgreSQL) require(sqldf) require(caroline) 为了在PostgreSQL和R之间处理数据 我在数据库中创建了一个公共模式,其中包含一些表(一个称为“数据”)和属性。我将表“data”作为数据帧“test”导入到R中。 在对它进行了一点操作之后,我尝试将其上传回PostgreSQL DB,并将其上传到(空的)表“data”中。但是,我总是

我已经开始使用这些软件包

            require(RPostgreSQL)
            require(sqldf)
            require(caroline)
为了在PostgreSQL和R之间处理数据

我在数据库中创建了一个公共模式,其中包含一些表(一个称为“数据”)和属性。我将表“data”作为数据帧“test”导入到R中。 在对它进行了一点操作之后,我尝试将其上传回PostgreSQL DB,并将其上传到(空的)表“data”中。但是,我总是遇到一个错误,我无法找到解决方法:

         dbWriteTable2(con, "data", test, fill.null = T, add.id=T, 
          row.names=FALSE, pg.update.seq=FALSE)

        [1] "loading draft table to database"
        [1] FALSE

       Warning message:
       In postgresqlWriteTable(conn, name, value, ...) :
       table data exists in database: aborting assignTable
我知道“数据”表是存在的。因此,我使用了dbWriteTable2函数,它似乎能够将数据帧插入表“data”中相应的属性中

从PostgreSQL数据库中删除表数据并重新运行时,我得到:

          dbWriteTable2(con, "data", test, fill.null = T, add.id=T, 
          row.names=FALSE, pg.update.seq=FALSE)


      Error in `[.data.frame`(dbGetQuery(conn, paste("select          a.attname from pg_attribute a, pg_class c, pg_tables t, pg_namespace nsp",  : 
选择未定义的列


总而言之,如何将数据帧上载到PostgreSQL数据库中的(空)现有表中。

它不应该是
dbWriteTable2(con,“data”,test,…)
?我猜您必须以character vector.THX的形式给出表的名称。但是我在postgresqlExecStatement(conn,statement,…)中得到以下建议错误:RS-DBI驱动程序:(无法检索结果:错误:列“id”第1行不存在:从数据顺序中按id DESC LIMIT 1选择*我的意思是,这些列与数据库中的列相同。第一行中没有id列,因为add.id=F。将其更改为TRUE没有什么意义,因为数据库中没有“id”列。或者我是否遗漏了一些内容?但是,在添加“id”时对于db和add.id=T,我将在nchar(c)中得到错误:'nchar()'需要一个字符向量。如果不查看您的数据,很难说。此外,我对
caroline
软件包和postgresql都没有太多经验。您是否尝试通过
dbWriteTable
进行同样的操作?这并不奇怪。这正是它应该做的。第二个参数是t的名称第三个是要放入数据库中的值(作为
data.frame
)。如果要将值附加到现有表中,只需给出现有表的名称并添加参数
append=TRUE