r - 使用 dplyr 连接到外部服务器/数据库

标签 r postgresql dplyr

我正在尝试使用 dplyr 连接到位于外部服务器中的数据库

src_postgres(dbname = NULL, host = NULL, port = NULL, user = NULL, 
                 password = NULL, ...)

到目前为止一切顺利,我已经获得了连接到数据库所需的所有参数。问题是数据库所在的服务器也需要身份验证(用户名和密码)。

我尝试使用 ?pipe 创建连接,但似乎它只在尝试从远程服务器提取文件 时有效。

有什么线索吗?

最佳答案

好消息!我一直这样做,并不难 :)

两步:

1。创建SSH key 并放在远程服务器上

来自 https://serverfault.com/posts/241593/edit

在本地机器上生成 ssh key :

$ ssh-keygen -t rsa -b 2048

然后按 Enter 输入空密码以得到:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.

将您的 key 复制到目标服务器

ssh-copy-id id@server

检查这是否适用于 ssh 'id@server',并检查文件夹 .ssh/authorized_keys 中的 ssh key 。

您应该知道可以使用 $ ssh id@server 登录

2。将您的数据库端口转发到本地计算机

你应该知道能够使用

ssh -fN id@server

启动 SSH 连接并将端口转发到本地主机。 您可能需要将 -p 参数调整为 ssh 以选择正确的端口。

一旦您可以成功转发端口,您应该能够从您的本地 机器使用src_postres() 来访问远程数据库。

你也可以用

开始你的R脚本
system("ssh -fN id@server")

或者把命令放在你的.Rprofile

3。 (可选)

此外,也许您不想在脚本中使用您的 idserver 地址,例如,如果您打算将它们提供给客户,或者将它们放在在 github 上。

然后,使用以下内容编辑或创建文件(在本地计算机上).ssh/config:

Host my_ssh
User id
Hostname server

然后你就可以使用 ssh -fN my_ssh

关于r - 使用 dplyr 连接到外部服务器/数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806734/

相关文章:

应用于 R 中的嵌套列表

r - 在 R 中使用 dplyr 的加权平均值进行汇总

ruby-on-rails - 事件记录检查属性是否在基于另一个属性的数组中

mysql - 通过 URL 将 Laravel 连接到 Heroku 数据库

sql - 在同一查询中多次使用计算列

r - 下一个出现的记录的索引

r - 'RCurl' [R] 抓取 API 时包 getURL 网页错误

r - 过滤或子集化数据框不包含所有值

r - `~` 函数中 `case_when` 之后的条件项

r - 如何使用管道 (%>%) 运算符正确地使 vim 缩进 dplyr 代码?