使用RStudio连接窗格连接PostgreSQL数据库

时间:2017-11-22 10:12:53

标签: r postgresql database-connection rstudio

我们有一个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!"))

我现在想要开始使用Connections窗格,但尽管尝试了多种方式来设置它,但我从来没有让它工作。这是我按照RStudio documentation

中所述的流程

1.单击“新建连接” 2.选择PostgreSQL Unicode(x64)
3.在参数窗口中,我粘贴以下代码:

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

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

  

失败。 :2.99:意外符号1:库(DBI)con&lt; -   dbConnect(odbc :: odbc(),. connection_string =“Driver = {PostgreSQL   Unicode(x64)}; Driver =“PostgreSQL

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

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

1 个答案:

答案 0 :(得分:1)

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

所以你的参数窗口应该是这样的:

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

请注意,您不需要指定驱动程序,因为您在上一个窗口中选择了PostgreSQL Unicode(x64)时已经选择了它。

实际上,这个参数窗口似乎只是为了构建你可以在它下面看到的连接字符串。所以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