Включить хэштег в 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.