我的 R (v. 3.1.1) dplyr (v. 0.3.0.2) 可以访问我的 POSTGRES 9.3.5 TABLE,但不能访问我在同一个数据库中的 VIEW。
dplyr 是否支持访问 POSTGRES 9.3.5 VIEW?
在 POSTGRES 中,我的 VIEW 定义如下:
centralstats=# \d "nicStats5"
View "public.nicStats5"
Column | Type | Modifiers
--------------+-------------------+-----------
affectedId | integer |
timeRecorded | bigint |
dn | character varying |
bytesRx | bigint |
查看定义:
SELECT "adaptorNICVnicStats"."affectedId",
"adaptorNICVnicStats"."timeRecorded",
"affectedId2Dn".dn,
"adaptorNICVnicStats"."bytesRx"
FROM "adaptorNICVnicStats",
"affectedId2Dn"
WHERE "adaptorNICVnicStats"."affectedId" = "affectedId2Dn"."affectedId";
IN R 可以从 dplyr 访问定义我的 VIEW 的所有数据库。 访问我的 VIEW 失败,如下所示:
centralstats <- src_postgres("centralstats",host = NULL, port = NULL,"postgres","Jmu2014!")
adaptorNICVnicStats <-tbl(centralstats, "adaptorNICVnicStats")
affectedId2Dn <-tbl(centralstats, "affectedId2Dn")
nicStats5 <-tbl(centralstats, "nicStats5")
## Fejl: Table nicStats5 not found in database //* COMMENT: "Fejl" is the Danish word for ERROR
最佳答案
David、Greg,感谢您的反馈。
我实际上找到了解决我问题的方法,我可以让 dplyr 读取一个 VIEW
使用 dplyr 中的 build_sql
函数将“SQL 隧道”直接插入 PostgreSQL。
假设 nicStats6 是 PostgreSQL 中的一个表,然后我可以将它“导入”到 dplyr 中
My_nicStats6 <- tbl(centralstats, "nicStats6")
正如我最初的问题中所写,这不适用于 VIEW,因此当 nicStats5 是 PostgreSQL 中的 VIEW 时
My_nicStats5 <-tbl(centralstats, "nicStats5")
会导致错误“找不到表”
但是这个到 nicStats5 的“SQL 隧道”是有效的:
My_nicStats5 <- tbl(centralstats, build_sql('SELECT * FROM "nicStats5"'))
关于r - dplyr 可以访问 POSTGRES 9.3.5 VIEW 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755281/