1

我正在尝试在 R 中访问和读取 Postgres 数据库的表和视图。我能够使用dbListTables使用包的函数获取表,RPostgres但面临views.

由于对 postgres 有幼稚的了解,因此也在 R 中寻找访问和读取视图的方法。

library(RPostgres)
library(DBI)
library(dplyr)
library(sqldf)

pw<- {
"password"
}

conn <- dbConnect(RPostgres::Postgres()
             , host="host-name"
             , port='5432'
             , dbname="database-name"
             , user="username"
             , password=pw)

dbExistsTable(conn, "Test_Table")
#TRUE
dbListTables(conn)

mydf <- dbReadTable(conn, "Test_Table") # To Read the table in R

我还根据此链接尝试了以下命令:https ://github.com/tidyverse/dplyr/issues/1007但没有成功。

SELECT table_name
FROM INFORMATION_SCHEMA.tables 
WHERE table_schema = ANY (current_schemas(false));  
4

2 回答 2

2

确保视图名称在引号中。

viewDataFrame<-dbGetQuery(con,'SELECT * FROM dh2."viewName"')

注意:视图名称“viewName”用引号引起来。否则它不会工作。

于 2018-10-09T06:03:48.760 回答
0

似乎dbExistsTabledbListTables不能看到 Postgres 视图。

但是您应该能够通过如下查询找到它们:

SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_schema not in ('pg_catalog', 'information_schema') and table_type = 'VIEW'

一旦您知道要查找的视图的名称,就可以dbReadTable(conn, "myview")工作。

注意:如果它仍然不起作用,请确保使用设置正确的架构

SET search_path to myschema
于 2017-07-19T11:20:47.060 回答