После долгого процесса поиска и устранения неисправностей я наконец-то заставил RStudio подключиться к моей базе данных Oracle с помощью мгновенного клиента. Мотивация для этого состояла в том, чтобы использовать dbplyr для выполнения большинства моих запросов. Однако я не могу отправить какие-либо запросы через dbplyr, так как все имена столбцов и таблиц очень длинные и приводят к ORA-00972: identifier is too long.
Пример ошибки
test <- tbl(con, "long_shcema_name.very_long_and_descriptive_name") %>%
select(a_column)
Error: nanodbc/nanodbc.cpp:1617: 42000: [Oracle][ODBC][Ora]ORA-00972: identifier is too long
<SQL> 'SELECT *
FROM ("long_shcema_name.very_long_and_descriptive_name") "zzz7"
WHERE (0 = 1)'
Я думал, что Проблема была связана с драйвером. Моя работа использует Oracle 12.2, который имеет больший предел для идентификаторов, но dbGetQuery отлично работает с InstantClient
Рабочий пример без dbplyr
dbGetQuery(con,'
select "a_column"
from
long_shcema_name.very_long_and_descriptive_name')
a_column
1
0
2
.
.
.
Это дает мне желаемые результаты.
Есть ли решение?
Я немного раздражен. Мне потребовалось почти три недели, чтобы настроить соединение odb c с моей базой данных работ с помощью мгновенного клиента. Я был в состоянии сделать запрос, используя RODB C и R Oracle из get go, но хотел использовать dplyr. Это закончилось тем, что не работало, и у меня нет большого количества сока, чтобы выяснить, почему. На этом этапе любая помощь будет чрезвычайно ценной.