Включить хэштег в dbGetQuery()

Я пытаюсь использовать 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

Если я выполню оператор SQL в HANA, он будет работать отлично. Я также могу запросить постоянные таблицы. Поэтому я предполагаю, что R не проходит через хэштег. Вставка побегов, как "SELECT * FROM \\#CONTROL_TBL" однако не решил мою проблему.

3 ответа

Невозможно запросить данные локальной или глобальной временной таблицы из другого сеанса, поскольку они по определению зависят от конкретного сеанса. В случае глобальной временной таблицы можно запросить метаданные таблицы, поскольку они совместно используются сеансами.

Источник: Учебник для временных таблиц HANA

Хорошо, локальные временные таблицы всегда видны только для сеанса, в котором они были определены, в то время как глобальные временные таблицы видны так же, как обычные таблицы, но данные являются частными для сеанса.

Итак, если вы создали локальный темп. table (имя начинается с #) в другом сеансе, поэтому неудивительно, что его нельзя найти.

Для вашего примера вопрос таков: зачем вам временная таблица? Вместо этого вы можете, например, определить представление или табличную функцию для выбора данных.

Вы должны заключить в кавычки таблицу, так как она содержит специальные символы, подробности см. В справке SAP, идентификаторы

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

Смотрите также связанное обсуждение на stackru.

Другие вопросы по тегам