0

我正在尝试使用 RJDBC 连接到 SAP HANA 数据库并查询以 #-prefix 存储的临时表:

test <- dbGetQuery(jdbcConnection,
      "SELECT * FROM #CONTROL_TBL")

# Error in [...]: invalid table name:  Could not find table/view #CONTROL_TBL in schema USER

如果我在 HANA 中执行 SQL 语句,它工作得非常好。我还可以查询永久表。因此,我假设 R 不会越过主题标签。然而,插入转义符"SELECT * FROM \\#CONTROL_TBL"并没有解决我的问题。

4

3 回答 3

1

不可能从不同的会话中查询本地或全局临时表的数据,因为它们根据定义是特定于会话的。在全局临时表的情况下,可以查询表的元数据,因为它们是跨会话共享的。

来源:HANA 临时表教程

于 2017-02-24T11:34:45.480 回答
0

您必须为该表加上双引号,因为它包含特殊字符,有关详细信息,请参阅SAP 帮助、标识符

测试 <- dbGetQuery(jdbcConnection, 'SELECT * FROM "#CONTROL_TBL"')

另请参阅有关stackoverflow的相关讨论。

于 2017-02-24T06:38:47.290 回答
0

好的,本地临时表始终只对定义它们的会话可见,而全局临时表就像普通表一样可见,但数据是会话私有的。

所以,如果你创建了本地 temp. 表(名称以#开头)在不同的会话中,那么难怪找不到它。

对于您的示例,问题是:为什么首先需要一个临时表?取而代之的是,您可以例如定义一个视图或一个表函数来从中选择数据。

于 2017-02-25T03:38:29.990 回答