dplyr & monetdb - 查询 schema.table 的适当语法?
dplyr & monetdb - appropriate syntax for querying schema.table?
在 monetdb
中,我设置了一个模式 main
并且我的 table 被创建到这个模式中。
例如department
table就是main.department
.
使用 dplyr
我尝试查询 table:
mdb <- src_monetdb(dbname="model", user="monetdb", password="monetdb")
tbl(mdb, "department")
但是我明白了
Error in .local(conn, statement, ...) :
Unable to execute statement 'PREPARE SELECT * FROM "department"'.
Server says 'SELECT: no such table 'department'' [#42S02].
我尝试使用 "main.department"
和其他类似的组合,但没有成功。
什么是合适的语法?
对此有一个有点棘手的解决方法:我们可以手动设置连接的默认架构。我有一个数据库 testing
,其中有一个模式 foo
和一个名为 bar
的 table。
mdb <- src_monetdb("testing")
dbSendQuery(mdb$con, "SET SCHEMA foo");
t <- tbl(mdb, "bar")
dbplyr
包(dplyr
的后端,用于数据库连接)具有针对这些情况的 in_schema()
函数:
conn <- dbConnect(
MonetDB.R(),
host = "localhost",
dbname = "model",
user = "monetdb",
password = "monetdb",
timeout = 86400L
)
department = tbl(conn, dbplyr::in_schema("main", "department"))
在 monetdb
中,我设置了一个模式 main
并且我的 table 被创建到这个模式中。
例如department
table就是main.department
.
使用 dplyr
我尝试查询 table:
mdb <- src_monetdb(dbname="model", user="monetdb", password="monetdb")
tbl(mdb, "department")
但是我明白了
Error in .local(conn, statement, ...) :
Unable to execute statement 'PREPARE SELECT * FROM "department"'.
Server says 'SELECT: no such table 'department'' [#42S02].
我尝试使用 "main.department"
和其他类似的组合,但没有成功。
什么是合适的语法?
对此有一个有点棘手的解决方法:我们可以手动设置连接的默认架构。我有一个数据库 testing
,其中有一个模式 foo
和一个名为 bar
的 table。
mdb <- src_monetdb("testing")
dbSendQuery(mdb$con, "SET SCHEMA foo");
t <- tbl(mdb, "bar")
dbplyr
包(dplyr
的后端,用于数据库连接)具有针对这些情况的 in_schema()
函数:
conn <- dbConnect(
MonetDB.R(),
host = "localhost",
dbname = "model",
user = "monetdb",
password = "monetdb",
timeout = 86400L
)
department = tbl(conn, dbplyr::in_schema("main", "department"))