【发布时间】:2021-10-15 08:29:06
【问题描述】:
第一次尝试使用 DBI 连接到 Postgres 以使用 dbplyr。
问题:我正在尝试将 dbplyr 与现有的 odbc 连接一起使用,但 dbplyr 似乎没有为了解决这个问题,因此尝试使用 DBI 创建一个新连接,但是这个 dbi 连接给出了一个错误。所以我希望修复 dbi 连接。
- 当我尝试使用 DBI 复制现有连接时,连接不起作用:
库
library(odbc)
library(RODBC)
library(DBI)
library(dplyr)
library(dbplyr)
# from: https://stackoverflow.com/questions/59413904/reading-data-from-a-sql-server-in-rstudio-dplyr
# 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
上运行它- 我的现有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()
(我不是真正的技术人员或数据库管理员或 devops 人,所以如果它看起来充满基本错误,请原谅)。
【问题讨论】:
-
你使用了
"some_xyz.amazonaws.com",然后说你是“在localhost:8787上运行这个”。是哪个? -
@r2evans:我正在使用
Rstudiobyssh tunneling所以我得到localhost:8787& 实际主机名类似于sandbox......some ...xyz ...amazon.aws.com。通过使用相同的凭据,我在第二个指针中的 odbc 连接有效。 -
尝试
server="localhost"而不是host="...";odbc更喜欢server=,我相信。 -
对于您的其他错误,请考虑类似
tbl(con1,in_schema("mydb_demo", "demo_table"))。 -
是的,这很好用。非常感谢您的帮助。你真是个了不起的家伙!!!
标签: r postgresql dbplyr r-dbi