在通道正则表达式中找不到 sqlfetch 表
Posted
技术标签:
【中文标题】在通道正则表达式中找不到 sqlfetch 表【英文标题】:sqlfetch table not found in channel regular expression 【发布时间】:2019-02-25 16:09:10 【问题描述】:我正在尝试获取多个 Access 文件,其中我需要的表每次都具有不同的名称。
例子:
在Access文件1中,表名是“base1” 在 Access 文件 2 中,表名为“base2” 等我尝试了以下函数,该函数稍后将在 map 函数中用于从我的目录中获取所有 Access 文件:
fetch <- function (x) y <- odbcConnectAccess2007(x) sqlFetch(y,"^base.$") odbcCloseAll()
R 似乎不喜欢 sqlfetch
上的正则表达式,因为我收到以下消息:
odbcTableExists(channel, sqtable) 中的错误:“^base.$”:在通道上找不到表
请注意,当我使用“base1”作为sqltable
而不是“^base.$”时,这非常有效
你能帮帮我吗?
【问题讨论】:
【参考方案1】:我已经找到了解决这个问题的方法:
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()
【讨论】:
以上是关于在通道正则表达式中找不到 sqlfetch 表的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式创建 AWS Athena 表 (RegexSerDe)