首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBI dbWriteTable

DBI dbWriteTable
EN

Stack Overflow用户
提问于 2017-01-07 03:46:05
回答 0查看 1.3K关注 0票数 0

我真的很喜欢DBI的dbWriteTable函数(我通常使用RSQLite或ROracle作为后端)。

我使用该函数来导入许多excel电子表格,问题是如果这些电子表格是长期创建的,则会添加/删除列,或者将名称从一个文档更改为另一个文档。

所以我的问题是,有没有人有一种相对快速的方法来将数据添加到数据库中,而不必完美地匹配文件列表?

下面是我使用的示例脚本

代码语言:javascript
复制
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")})

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41513196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档