通道正则表达式中找不到sqlfetch表

时间:2019-02-25 16:09:11

标签: sql r ms-access odbc rstudio

我正在尝试获取多个Access文件,其中所需的表每次都有不同的名称。

示例:

  • 在访问文件1中,表名称为“ base1”
  • 在访问文件2中,表名称为“ base2”

我尝试了以下函数,以后将在map函数中使用该函数从目录中提取所有Access文件:

fetch <- function (x) { y <- odbcConnectAccess2007(x) sqlFetch(y,"^base.$") odbcCloseAll() }

R似乎不喜欢sqlfetch上的正则表达式,因为我收到以下消息:

  

odbcTableExists(channel,sqtable)中的错误:‘^ base。$’:在通道上找不到表

请注意,当我将“ base1”用作sqltable而不是“ ^ base。$”时,此方法非常有效

能帮我吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法:

    fetch <- function (x) {
      y <- odbcConnectAccess2007(x)
      find_table_name <-
        str_extract(sqlTables(y)$TABLE_NAME, "^(base.*)$") %>%
        na.omit
      table_result <- sqlFetch(y, find_table_name[1])
      return(table_result)
      odbcCloseAll()

}