我真的很喜欢DBI的dbWriteTable函数(我通常使用RSQLite或ROracle作为后端)。
我使用该函数来导入许多excel电子表格,问题是如果这些电子表格是长期创建的,则会添加/删除列,或者将名称从一个文档更改为另一个文档。
所以我的问题是,有没有人有一种相对快速的方法来将数据添加到数据库中,而不必完美地匹配文件列表?
下面是我使用的示例脚本
require(RSQLite)
require(readxl)
# Create database file
conn <- dbConnect(drv=SQLite(),dbname = "path to database")
# Define import function
excel2sqltable <- function(conn, file, table) {
source.df <- read_excel(path=file,col_names = TRUE) %>%
cbind("SourceFile" = file, .)
names(source.df) <- source.df %>%
data.frame(check.names = TRUE) %>%
{gsub("[.]",x=names(.),replacement="_")}
print(paste("Importing ", file))
setOldClass(c("tbl_df", "data.frame"))
dbWriteTable(conn = conn, name = table, value = source.df, append=TRUE)
}有了这个函数,我可以做以下事情:sapply(list.files(),FUN = function(x){excel2sqltable(conn,x,"Imports")})
https://stackoverflow.com/questions/41513196
复制相似问题