r odbc impala从select中的默认数据库更改

41ik7eoe  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(358)

我已经成功地连接到 Impala 使用 Rodbc 包裹。当我使用microsoftobc管理员工具创建连接时,我将默认数据库设置为 default . 这是一个存在于这个 Impala 示例中的数据库,但它不是我真正关心的数据库。我只想连接到示例,并在需要时在数据库之间来回切换。
sql Server通过 odbc ,我能做到。假设我建立了一个 odbc 连接到ms sql server并将默认数据库设置为 DB1 . 如果我想查询另一个数据库 DB2 ,我可以这样做:

library(odbc)

# set up connection to MS SQL server

mssqlcon <- dbConnect(odbc(), "ms_sql_server")

# query DB2

my_table <- dbGetQuery(mssqlcon , "SELECT * FROM [DB2].[dbo].[mytable])

我不知道如何使用impala odbc连接来实现这一点。假设有一张table叫 imp_table1 在一个叫做 imp_db2 在我连接到的 Impala 示例中。我将用于mssqlserver的技巧不起作用。我试过的是:


# impala connection

impcon <- dbConnect(odbc(), "Test Impala")
my_table <- dbGetQuery(impcon , "SELECT * FROM [imp_table1])

这会抛出一个错误 user does not have privileges to execute 'SELECT' on: default.imp_table1 如果我试一下 USE 语句,最后出现语法错误。

my_table <- dbGetQuery(impcon , "USE imp_db2; SELECT * FROM [imp_table1])

最后,如果我尝试使用与SQLServer类似的语法,就会出现以下错误。

my_table <- dbGetQuery(impcon , "SELECT * FROM imp_db2.imp_table1) 

User  does not have privileges to execute 'SELECT' on: imp_db2.imp_table1

这个错误没有意义,因为我可以使用带有凭据的web界面访问此表,甚至可以使用r studio的连接浏览器预览数据中的列。我知道可以在ms odbc administrator中更改连接设置,以便默认为不同的表,但我更希望使用单个连接字符串,以便在impala示例中从一个数据库跳转到另一个数据库。
任何帮助都将不胜感激。

uplii1fm

uplii1fm1#

怎么样

my_table <- dbGetQuery(impcon , dbplyr::in_schema("imp_db2", "imp_table1"))

相关问题