dbplyr中关于数据库表的语法是什么?

3

我已经连接到我们的数据库:

con <- dbConnect(odbc::odbc(), "myHive")

我知道这个操作成功了,因为当我运行它时,在RStudio右上方可以看到所有的数据库和表格。
我的问题是,我该如何选择特定的数据库和表格组合呢?文档显示用户选择单个表格“flights”,但我需要执行相当于somedatabase.sometable的操作。
尝试过:
mytable <- tbl(con, "somedb.sometable")
    Error in new_result(connection@ptr, statement) : 
      nanodbc/nanodbc.cpp:1344: 42S02: [Hortonworks][SQLEngine] (31740) Table or view not found: HIVE..dp_enterprise.uds_order 

然后尝试:

mytable <- tbl(con, "somedb::sometable")

Error in new_result(connection@ptr, statement) : 
  nanodbc/nanodbc.cpp:1344: 42S02: [Hortonworks][SQLEngine] (31740) Table or view not found: HIVE..somedb::sometable

我尝试去掉引号 "" ,但没有成功。

在 RStudio 的连接面板中,我能看到 somedb.sometable。它在那里!我该如何将它保存到变量 mytable 中?

2个回答

1
创建连接时选择数据库,在创建tbl(使用from参数)时选择表。
dbConnect没有标准接口,因此传递数据库名称的确切方式取决于您使用的DBDriver。实际上,DBI :: dbConnect只是一个通用调度到特定于驱动程序的dbConnect
在您的情况下,驱动程序是odbc,因此您可以查看{{link1:odbc :: dbConnect文档}},并且您将看到相关的参数是database
这将起作用:
con <- dbConnect(odbc::odbc(), "myHive", database = "somedb")
df <- tbl(con, from = "sometable")

对于大多数其他驱动程序(例如RMariaDBRMySQLRPostgresRSQLite),参数被称为dbname,所以您应该这样做:

con <- dbConnect(RMariaDB::MariaDB(), dbname = "somedb")
df <- tbl(con, from = "sometable")

0

我想我找到了,使用in_schema

mytable <- tbl(con, in_schema("somedb", "sometable"))

这将返回一个列表而不是 tbl,所以我不确定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接