r - dbplyr::in_schema 区分大小写

标签 r postgresql dplyr dbplyr

函数 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');

然后我尝试使用 R 中的 in_schema 连接到表:

 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')

看起来像一个不区分大小写的问题,当我将数据库与 public 之外的其他模式一起使用并且表名包含大写字母时,这会产生问题。

最佳答案

我找到了如下解决方案:在 ''

中添加 ""
tbl(con, '"OCLOC"')

关于r - dbplyr::in_schema 区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45226603/

相关文章:

r - Rmarkdown yaml 中的多个作者和字幕

r - 更改自动绘图的轴标题

regex - 持续模式匹配来识别 SQL 子句

r - 使用名称向量和 dplyr::mutate 中的计算向量创建多个新变量

r - 将特定列中每一行的值转换为该特定列中特定行的值的百分比

r - 如何将列表元素提取到 r 中的多个 tibble 列中?

r - 如何在 R 的 igraph 图中为重复值添加一行?

node.js - NodeJS Postgres 切换工作模式

postgresql - psycopg2:连接关闭后重新使用连接对象

ruby-on-rails - Rails 中的自定义名称外键导致 'ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation' 错误