Функция dbplyr :: in_schema () не может подключаться к таблицам с прописными буквами.
Когда я создаю таблицу в PostgreSQL.
CREATE TABLE public."OCLOC"
(
cod_ocloc double precision NOT NULL,
lab_ocloc character varying(255),
CONSTRAINT pk_ocloc PRIMARY KEY (cod_ocloc)
);
INSERT INTO public."OCLOC"(
cod_ocloc, lab_ocloc)
VALUES (1, 'example');
Затем я пытаюсь подключиться к таблице с помощью in_schema из R:
con <- DBI::dbConnect(RPostgreSQL::PostgreSQL(),
dbname = 'dbname',
user = 'user',
host = 'host',
password = 'password')
tbl(con, dbplyr::in_schema('public','OCLOC'))
Предупреждает о следующей ошибке
Error in postgresqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not Retrieve the result : ERROR: no existe la relación «public.ocloc»
LINE 1: SELECT * FROM public.OCLOC AS "zzz3" WHERE 0=1
^
)
Но когда я пытаюсь без подключения in_schema, работает:
tbl(con, 'OCLOC')
Похоже на проблему без учета регистра. Это создает проблему, когда я использую базу данных с другими схемами, кроме общедоступных, и есть имена таблиц с заглавными буквами.
in_schema
, поскольку, похоже, нет проблем с поддержкой использования заглавных букв:> dbplyr::in_schema('public','OCLOC') <IDENT> public.OCLOC
Может ли проблема быть связана с драйвером? Вы пытались выполнить созданный запрос напрямую?DBI::dbGetQuery(con, 'SELECT * FROM public.OCLOC AS "zzz3" WHERE 0=1')
- person JAD   schedule 23.08.2017DBI::dbWriteTable
иDBI::dbReadTable
, чтобы они преобразовали все запросы и имена таблиц в верхний регистр перед запуском.dbplyr
потрясающий, но совершенно новый и полный сюрпризов, поэтому я обнаружил (после полдня попыток и безуспешной попытки rbind) безопаснее максимально стандартизировать (и минимизировать) использование. - person Moody_Mudskipper   schedule 19.09.2017