使用 RStudio Connection Pane 连接 PostgreSQL 数据库

Using RStudio Connection Pane to connect with a PostgreSQL database

我们有一个 PostgreSQL 数据库在工作。每次我想连接到它时,我都会手动执行以下代码来建立连接,而且效果很好。

    library(RPostgreSQL)
    con <- dbConnect(dbDriver("PostgreSQL"),
                     dbname   = "company_xy",
                     host     = "db.company_xy.de",
                     port     = 5432,
                     user     = rstudioapi::askForPassword("User"),
                     password = rstudioapi::askForPassword("Password!"))

我现在想开始使用“连接”窗格,但尽管尝试了多种设置方法,但我始终无法正常工作。这是我在 RStudio documentation:

中描述的过程

1.Click 新连接
2.Select PostgreSQL Unicode(x64)
3.In 参数 window 我粘贴以下代码:

    Driver = "PostgreSQL",
    Server = "db.company_xy.de",
    Database = "company_xy",
    UID = "my_username",
    PWD = "my_password",
    Port = 5432

我总是收到以下错误消息:

Failure. :2.99: unexpected symbol 1: library(DBI) con <- dbConnect(odbc::odbc(), .connection_string = "Driver={PostgreSQL Unicode(x64)};Driver = "PostgreSQL

我尝试删除括号并在参数 ({}, ;) 之间使用不同类型的分隔符,但没有结束。 odbc 和 DBI 的驱动程序已安装。

任何人都可以发现编码错误还是我做错了吗?

如果您删除双引号和空格,并将逗号替换为分号,它应该可以工作。

因此您的参数 window 应该如下所示:

Server=db.company_xy.de;
Database=company_xy;
UID=my_username;
PWD=my_password;
Port=5432;

请注意,您不需要指定驱动程序,因为您在之前 window 中选择 PostgreSQL Unicode(x64) 时已经选择了它。

实际上,这个参数 windows 的目的似乎只是为了构建您可以在其下方看到的连接字符串。所以 IMO 从你的 R 脚本(或控制台)设置连接更直接:

library(DBI)
con <- dbConnect(
  odbc::odbc(),
  driver = "PostgreSQL Unicode(x64)",
  Server = "db.company_xy.de",
  Database = "company_xy",
  UID = rstudioapi::askForPassword("User"),
  PWD = rstudioapi::askForPassword("Password!"),
  Port = 5432
)

或者,如果您喜欢连接字符串:

library(DBI)
con <- dbConnect(
  odbc::odbc(), 
  .connection_string = "Driver={PostgreSQL Unicode(x64)};Server=db.company_xy.de;Database=company_xy;UID=my_username;PWD=my_password;Port=5432;"
)

但后一种方法不允许您使用 rstudioapi::askForPassword.

在这两种情况下,连接都会出现在您的“连接”窗格中。

也许将来您不需要为此使用 odbchttps://community.rstudio.com/t/postgresql-in-connection-tab/1817/4