我已连接到我们的数据库:
con <- dbConnect(odbc::odbc(), "myHive")
我知道这是成功的,因为当我运行它时,在RStudio的右上方,我可以看到我们所有的数据库和表。
我的问题是,如何选择特定的数据库表组合?该文档显示用户选择一个表“飞行”,但我需要做一些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中?
答案 0 :(得分:1)
在创建连接时选择数据库,在创建tbl时选择表(使用from
参数)。
dbConnect没有标准接口,因此传递数据库名称的确切方法取决于您使用的DBDriver。实际上,DBI::dbConnect
只是针对特定于驱动程序的dbConnect
的通用调度。
在您的情况下,驱动程序为odbc
,因此您可以签出the documentation for odbc::dbConnect
,然后会看到相关的参数为database
。
这将起作用:
con <- dbConnect(odbc::odbc(), "myHive", database = "somedb")
df <- tbl(con, from = "sometable")
对于大多数其他驱动程序(例如RMariaDB
,RMySQL
,RPostgres
,RSQLite
),该参数称为dbname
,因此您可以这样做:
con <- dbConnect(RMariaDB::MariaDB(), dbname = "somedb")
df <- tbl(con, from = "sometable")
答案 1 :(得分:0)
我想我找到了,使用in_schema
mytable <- tbl(con, in_schema("somedb", "sometable"))
这返回的列表不是tbl,所以我不确定。