R用户定义的函数,通过ODBC导入ACCESS表

时间:2017-01-11 13:13:34

标签: sql r odbc

这可能很简单,但我无法找到可行的解决方案。

我的设置是:

    R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=Portuguese_Brazil.1252  LC_CTYPE=Portuguese_Brazil.1252    LC_MONETARY=Portuguese_Brazil.1252 LC_NUMERIC=C                      
[5] LC_TIME=Portuguese_Brazil.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.3.1  rpart_4.1-10

我正构建一个函数,通过ODBC从ACCESS DB导入文件,如下所示:

importa.sql <- function(someFile)
  {
    library(RODBC) 
    con <- odbcConnect("someTable") 
    qry<-paste("(","SELECT * FROM ",someFile,")")
    someFile <- sqlQuery(con,qry,stringsAsFactors=FALSE) 
  }

我测试了每一行,代码按预期工作。问题是:当我运行该功能时,它似乎工作得很好,但是没有导入文件!!!

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您的函数返回NULL,因为函数的最后一个语句是赋值给本地对象someFile。关闭连接会很好。试试这个功能。

importa.sql <- function(someFile) {
  library(RODBC) 
  con <- odbcConnect("someTable") 
  qry <- paste("(", "SELECT * FROM ", someFile, ")")
  df <- sqlQuery(con, qry, stringsAsFactors = FALSE)
  close(con)
  return(df)
}

答案 1 :(得分:0)

如果有人有同样的疑问,解决方案真的很简单。

只需以这种方式调用函数:

file <- importa.sql(someFile)