我使用RPostgreSQL包遇到的一件事是dbWriteTable(... overwrite = TRUE)似乎破坏了现有的表结构(数据类型和约束),而dbRemoveTable()等同于DROP表。
所以我用过:
ltvTable <- "the_table_to_use"
dfLTV <- dataframe(x,y,z)
sql_truncate <- paste("TRUNCATE ", ltvTable) ##unconditional DELETE FROM…
res <- dbSendQuery(conn=con, statement=sql_truncate)
dbWriteTable(conn=con, name=ltvTable, value=dfLTV, row.names=FALSE, append=TRUE)
是否需要TRUNCATE步骤,或者是否有一个dbWriteTable方法只覆盖内容而不是结构?
我在 Manura Omal 向How we can write data to a postgres DB table using R?提供的答案中遇到了不同的行为,因为overwrite = TRUE似乎没有先截断。
我正在使用:RPostgreSQL 0.4-1; PostgreSQL 9.4
祝福 - JS
答案 0 :(得分:0)
据我所知,overwrite = T做了3件事:
因此,如果要保留结构,则需要截断步骤。 外键的存在或不存在可能导致不同的行为,从而阻止DROP表步骤。