【发布时间】:2020-11-14 07:59:12
【问题描述】:
我想将 R 连接到 AWS 中的 Athena,这样我就可以从数据库中获取一个表到 R 中。所以我上网搜索了如何做到这一点。我找到了这个网站here。那告诉我我需要安装驱动程序。我有一个mac(这对我来说也是新的),我在website 的mac 部分下发现我需要安装我所做的自制软件。然后我在终端中执行了这些后续步骤。
-
安装所有数据库都需要的UnixODBC
brew 安装 unixodbc
-
安装常用数据库驱动程序(可选)
brew install 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)
显示零行和长度为 0 的 row.names。
我也跑过这个
cp /etc/odbcinst.ini ~/.odbcinst.ini && Rscript -e 'odbc::odbcListDrivers()
我明白了
cmdand quote> '
cp: /etc/odbcinst.ini: No such file or directory
我不明白为什么会这样,因为我完成了第一步和第二步。
【问题讨论】:
-
看起来您所包含的说明的第二个链接是用于连接到传统的 ODBC 数据库,例如 Microsoft SQL Server,这是 FreeTDS 用于连接的。您是否考虑过尝试为此制作的 RAthena 包? cran.r-project.org/web/packages/RAthena/readme/README.html
-
感谢您将链接发送给我。这对我来说可能会更好,但我只是对这里显示的参数有疑问
con <- dbConnect(RAthena::athena(), aws_access_key_id='YOUR_ACCESS_KEY_ID', aws_secret_access_key='YOUR_SECRET_ACCESS_KEY', s3_staging_dir='s3://path/to/query/bucket/', region_name='eu-west-1')是访问密钥 ID,只是我的用户登录详细信息,还是有人必须让我访问的特殊内容。跨度> -
我还想问你是否知道我在哪里可以看到查询存储桶的路径。例如,我在 Athena 中看到设置查询结果位置的路径,但我不知道这是否是同一件事
-
ACCESS_KEY_ID和SECRET_ACCESS_KEY在 Amazon Web Services IAM 中一起生成。它在某种程度上相当于 API 的用户名和密码。您需要生成一对,然后给它适当的权限。不幸的是,我的知识到此结束;我不是重度 R 或 AWS 用户。 :)
标签: r postgresql driver amazon-athena freetds