我想使用RODBC包来部分覆盖带有数据帧的Microsoft Access表。我不是在覆盖整个表,而是在寻找一种方法,该方法仅从该表中删除特定的行,然后将我的数据框附加到表的末尾。
我添加框架的方法非常简单。我将使用以下功能:
sqlSave(ch, df, tablename = "accessTable", rownames = F, append = T)
面临的挑战是找到一个函数,该函数将允许我提前从Access表中清除特定的行号。该sqlDrop和sqlClear功能似乎并没有让我在那里,因为他们会删除或清除整个表作为一个整体。
任何建议,以实现这一任务将不胜感激!
确实,考虑使用sqlQuery
来将要保留的行的子集添加到Access表中,然后rbind
使用当前数据帧,最后使用sqlSave
故意覆盖原始Access表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)
当然,您也可以进行计数器操作,按照指定的逻辑从表中删除行,然后附加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逻辑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句