我们有一个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的驱动程序。
任何人都可以发现编码错误或我做错了吗?
答案 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
。
在这两种情况下,连接都将显示在“连接”窗格中。
将来您可能不需要使用odbc
:
https://community.rstudio.com/t/postgresql-in-connection-tab/1817/4