无法打开库 '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 我需要安装我自己做的自制软件。然后我在终端中执行了这些后续步骤。
安装所有数据库都需要的 UnixODBC
brew 安装 unixodbc
安装通用数据库驱动程序(可选)
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 问题:
我想将 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 我需要安装我自己做的自制软件。然后我在终端中执行了这些后续步骤。
安装所有数据库都需要的 UnixODBC
brew 安装 unixodbc
安装通用数据库驱动程序(可选)
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 问题: