Извлечение таблицы из HANA с использованием R

Это таблица, которую я пытаюсь взять. Однако из моей базы данных HANA я получаю сообщение об ошибке ниже. Я знаю, что таблица существует, так как я извлек ее из Qlikview.

Из Qlikview я вытащил таблицу, используя следующий синтаксис

"_MY_SCHEMA_"."My.Table.Name/Table_ONE"

Когда я пытаюсь сделать то же самое в R, используя, я использую следующее, чтобы взять ту же таблицу

mydate <- sqlFetch(myconn, "_MY_SCHEMA.My.Table.Name/Table_ONE")

Это ошибка, которую я получаю

Error in odbcTableExists(channel, sqtable)
: table not found on channel

1 ответ

Решение

Эта проблема вызвана тем, что STRINGS заключены в кавычки. В этом сценарии это происходит на двух уровнях:

  1. Параметр команды R (sqlFetch (параметр-объекта соединения, параметр-строки sql)
  2. HANA SQL, где требуется литеральная строка для имени таблицы

Вы использовали инкапсуляцию двойных кавычек для обоих шагов. На каждом из этих двух этапов строки извлекаются из используемого вами параметра, который включает в себя удаление самых внешних маркеров инкапсуляции, которые здесь являются двойными кавычками. Итак, после шага 1 двойные кавычки исчезают, и HANA получает строку без них.
Это нормально, если вы на самом деле не требуете двойных кавычек для ваших идентификаторов, но в вашем примере это действительно так. (чувствительные к регистру идентификаторы со специальными символами, такими как / или. требуют двойных кавычек).

Решение этого довольно простое: R позволяет использовать одинарные (') и двойные (") кавычки для инкапсуляции строк.
Просто используйте одинарные кавычки в R, чтобы передать строку:

mydate <- sqlFetch(myconn, '_MY_SCHEMA."My.Table.Name/Table_ONE"')

Обратите внимание: вам по-прежнему необходимо заключить "My.Table.Name/Table_ONE" в двойные кавычки, чтобы HANA правильно обрабатывал этот идентификатор.

Для подключения R к HANA есть также несколько блогов:

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