我在SQL Server中有一个要向其添加数据的表。在添加数据之前,我想删除所有现有记录,但是我不想删除表并重新创建它,因为它在SQL Server中创建了要保留的索引。
使用r完成此操作我需要选择什么?
答案 0 :(得分:2)
有多种删除表中所有记录的方法。
您可以TRUNCATE
或DELETE
dbSendQuery(con, "TRUNCATE TABLE TableName")
dbSendQuery(con, "DELETE FROM TableName")
答案 1 :(得分:2)
当您只需要从数据库中删除某些记录时,要回答另一个用例,您可以创建一个查询列表,然后使用 map 来执行它们。例如,下一个代码将删除 id 为 1 到 5 的行。
library(purrr) # for the map() function
library(comprehenr) # for the to_vec() function. This are list comprehensions in R.
# listing the ids we want to delete
ids = c(1,2,3,4,5)
# creating list of DELETE queries with each id
delete_queries = paste0("DELETE FROM tablename WHERE (id = '", to_vec(for(id in ids) ids), "');")
# executing each query
map(.x = delete_queries, .f = dbExecute, conn = con)
请注意,我们使用 dbExecute 而不是 dbSendQuery,因为它返回受影响的记录数,因此我们可以确定操作发生了。