R连接Postgres

时间:2017-08-19 19:10:12

标签: r postgresql

我只想尝试将R连接到PostgreSQL,但是我收到错误

library("RPostgreSQL")
m <- dbDriver("PostgreSQL")
con <- dbConnect(m)

错误是

Error in postgresqlNewConnection(drv, ...) : 
  RS-DBI driver: (could not connect user@localhost:5432 on dbname "user": FATAL:  role "user" does not exist
)

看起来对我来说是访问问题,但如果有人可以提供帮助,我们就不知道如何解决。

2 个答案:

答案 0 :(得分:3)

数据库驱动程序需要更多信息:数据库服务器的地址,数据库名称,可以连接到数据库的“角色”(即用户)以及相关密码。你知道那些吗?

一个好的设置是收集并存储pg service file中的所有参数,并标有易于输入的“服务”名称。例如:

[xyz]
host=<hostname or ip>
dbname=<database>
user=<role>
password=<password>

然后,您可以仅使用服务名称在R中创建连接:

library('RPostgreSQL')
con <- dbConnect(PostgreSQL(), dbname = 'postgres://@/?service=xyz')

将pg服务文件保存在正确的路径中(Linux上为~/.pg_service.conf)。您可以为您使用的每个服务/数据库包含单独的块,因此该文件不应位于特定项目的目录中。

答案 1 :(得分:1)

您需要在通话dbConnect中添加凭据。这是一个例子

mydb <- dbConnect(m, user="rprimer", password="PASSword",                   
                  dbname="rprimer", host="192.168.1.151")

尝试指定所有必要信息,看看是否有帮助。您需要调整所有参数以适应您的设置。