Таблица sqlfetch не найдена в регулярном выражении канала - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь найти несколько файлов Access, в которых нужная таблица каждый раз имеет другое имя.

Пример:

  • в файле доступа 1, имя таблицы «base1»
  • в файле доступа 2, имя таблицы «base2»
  • и т. д.

Я попробовал следующую функцию, которая позже будет использоваться в функции карты для извлечения всех файлов Access из моего каталога:

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

R, похоже, не нравитсярегулярные выражения на sqlfetch, поскольку я получаю следующее сообщение:

Ошибка в odbcTableExists (channel, sqtable): '^ base. $': таблица не найдена на канале

Обратите внимание, что это прекрасно работает, когда я использую "base1" в качестве sqltable вместо "^ base. $"

Не могли бы вы мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 26 февраля 2019

Я нашел решение этой проблемы:

    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()

}
...