我已经成功地连接到 Impala 使用 R
的 odbc
包裹。当我使用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示例中从一个数据库跳转到另一个数据库。
任何帮助都将不胜感激。
1条答案
按热度按时间uplii1fm1#
怎么样