无法打开库 'FreeTDS':找不到文件并且 /etc/odbcinst.ini 丢失

Can't open lib 'FreeTDS' : file not found and /etc/odbcinst.ini is missing

我想将 R 连接到 AWS 中的 Athena,这样我就可以从数据库中获取一个 table 到 R 中。所以我上网搜索了如何执行此操作。我发现这个网站 here. That told me that I need to install drivers. I have a mac (which is also new to me) and I found under the section mac on this website 我需要安装我自己做的自制软件。然后我在终端中执行了这些后续步骤。

  1. 安装所有数据库都需要的 UnixODBC

    brew 安装 unixodbc

  2. 安装通用数据库驱动程序(可选)

    brew 安装 freetds --with-unixodbc

    brew 安装 psqlodbc

我平时不在候机楼工作。所以我不太熟悉它。不管怎样,我认为这样做了,所以我 运行 下面的代码。

con <- DBI::dbConnect(
  odbc::odbc(),
  Driver             = "FreeTDS",
  S3OutputLocation   = " etc..",
  AwsRegion          = "etc..",
  AuthenticationType = "...",
  Schema             = "...",
  UID                = rstudioapi::askForPassword("AWS Access Key"),
  PWD                = rstudioapi::askForPassword("AWS Secret Key")
  )

当我 运行 此代码时,出现以下错误:

Error: nanodbc/nanodbc.cpp:983: 00000: [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found 

当然,我用谷歌搜索了这个错误,并且在堆栈交换中发现了一些有趣的东西。在终端机上玩耍后,我得到了这些回复:

sudo Rscript -e 'odbc::odbcListDrivers()'
[1] name      attribute value    
<0 Zeilen> (oder row.names mit Länge 0)

显示零行和 row.names 长度为 0。

我也运行这个

cp /etc/odbcinst.ini ~/.odbcinst.ini && Rscript -e 'odbc::odbcListDrivers()

我明白了

cmdand quote> '
cp: /etc/odbcinst.ini: No such file or directory

我不明白为什么会这样,因为我完成了第一步和第二步。

这是为了扩展@FlipperPA 之前提到的内容。 s3_staging_dir 是 AWS Athena 输出结果的 AWS S3 存储桶。默认情况下 RAthena 会尝试通过删除即席查询结果来保持整洁。然而,这可以通过使用查询缓存来停止(https://dyfanjones.github.io/RAthena/articles/aws_athena_query_caching.html)。

如果您想获取查询的 AWS S3 路径,您可以执行以下操作:

library(DBI)

# connect to AWS Athena, credentials are stored in:
# .aws/credentials or environmental variables
con <- dbConnect(RAthena::athena(), s3_staging_dir="s3://athena/output/")

# Start caching queries
RAthena_options(cache_size = 10)

# Execute a query on AWS Athena
res <- dbExecuteQuery(con,  "select * from sampledb.elb_logs")

# AWS S3 Location of query
sprintf("%s%s.csv",res@connection@info$s3_staging, res@info$QueryExecutionId)

链接的 Whosebug 问题: