使用 RODBC 清除特定行

Clearing specific rows using RODBC

我想使用 RODBC 程序包 用数据框部分覆盖 Microsoft Access table。我没有覆盖整个 table,而是在寻找一种方法来仅从 table 中删除特定行,然后将我的数据框附加到其末尾。

我添加框架的方法非常简单。我会使用以下函数:

sqlSave(ch, df, tablename = "accessTable", rownames = F, append = T)

挑战在于找到一个函数,让我可以提前从 Access table 中清除特定的行号。 sqlDropsqlClear 函数似乎并没有让我到达那里,因为它们将删除或清除整个 table 作为一个整体.

任何完成此任务的建议将不胜感激!

确实,考虑使用 sqlQuery 对要保留的行的访问 table 进行子集化,然后使用当前数据帧 rbind,最后 sqlSave,有目的地覆盖原始访问 table 与 append = FALSE

# IMPORT QUERY RESULTS INTO DATAFRAME
keeprows <- sqlQuery(ch, "SELECT * FROM [accesstable] WHERE timedata >= somevalue")

# CONCATENATE df to END
finaldata <- rbind(keeprows, df)

# OVERWRITE ORIGINAL ACCESS TABLE
sqlSave(ch, finaldata, tablename = "accessTable", rownames = FALSE, append = FALSE)

当然你也可以做计数器,根据指定的逻辑从 table 中删除行,然后附加(不覆盖)sqlSave:

# ACTION QUERY TO RUN IN DATABASE
sqlQuery(ch, "DELETE FROM [accesstable] WHERE timedata <= somevalue")

# APPEND TO ACCESS TABLE
sqlSave(ch, df, tablename = "accessTable", rownames = FALSE, append = TRUE)

关键是找到指定要保留的行的 SQL 逻辑。