如何在 R 中使用 DBI 连接到 Postgres?

How to connect to Postgres using DBI in R?

第一次尝试使用 DBI 连接到 Postgres 以使用 dbplyr

问题: 我正在尝试使用 dbplyr 与我退出的 odbc 连接,但是 dbplyr 似乎无法使用,因此尝试使用 DBI 创建新连接,但是这个 dbi连接出现 错误 。所以我希望修复 dbi 连接

  1. 当我尝试使用 DBI 复制现有连接时,连接不起作用:

library(odbc)
library(RODBC)

library(DBI)
library(dplyr)
library(dbplyr)
# from: 
# from: /help/library/DBI/html/dbConnect.html
# from: https://github.com/r-dbi/odbc#odbc

dbicon <-  DBI::dbConnect( 
               odbc::odbc(),
               driver = "PostgreSQL Unicode", 
               database = "Postgres_xyz_db", 
               host = "some_xyz.amazonaws.com", 
               port = "5432", 
               uid = "user",
               pwd = "users_password")

# connect with table
tbl_qry <- tbl(dbicon, "mydb_demo.demo_table")

tbl_qry %>% head()

dbConnect 步骤出错:

Error: nanodbc/nanodbc.cpp:1021: 00000: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
 
In addition: Warning message:
In for (i in seq_len(n)) { : closing unused RODBC handle 2

PS: 我在 localhost:8787

上 运行
  1. 我的 现有 odbc / RODBC 连接 正在为同一个数据库工作。

library(odbc)
library(RODBC)

library(dplyr)
library(dbplyr)

现有工作连接:

## #################################################################
##                         Connection Para
## #################################################################

driver.name <- "PostgreSQL Unicode"
db.name <- "Postgres_xyz_db"
host.name <- "some_xyz.amazonaws.com" 
port <-"5432"
user.name <-"user"
pwd <- "users_password"

## #################################################################
##                      connect to a database
## #################################################################

con.text <- paste("DRIVER=",driver.name,
                  ";Database=",db.name,
                  ";Server=",host.name,
                  ";Port=",port,
                  ";PROTOCOL=TCPIP",
                  ";UID=", user.name,
                  ";PWD=",pwd,sep="")

con1 <- odbcDriverConnect(con.text)

但是 dbplyr 不适用于此连接

# connect with table
tbl_qry <- tbl(con1, "mydb_demo.demo_table")

tbl_qry %>% head() 

(我不是真正的技术人员或数据库管理员或开发人员,所以如果看起来有点基本错误,请原谅)。

odbc 连接优先于 server= 而不是 host=,因此您的连接尝试应该是

dbicon <-  DBI::dbConnect( 
               odbc::odbc(),
               driver = "PostgreSQL Unicode", 
               database = "Postgres_xyz_db", 
               server = "some_xyz.amazonaws.com", 
               port = "5432", 
               uid = "user",
               pwd = "users_password")