在R和PostgreSQL中,使用dbGetQuery查询模式内的表



我在R中,试图在本地Postgres数据库上运行查询,该数据库中有一些有线电视提供商的数据。使用DBI::dbGetQuery,我试图在该数据库上运行一个简单的查询,该查询在架构中有一个简单嵌套的表。这是我的连接代码:

pg <- dbDriver("PostgreSQL")
con <- dbConnect(pg, user = "postgres", 
password = "password",
host = "localhost",
port = 5432,
dbname = "db1")

到目前为止一切都很好——如果我运行dbListTables(con),我会得到正确的表列表。

棘手的部分是运行以下查询:

test_get <- dbGetQuery(con, "select * from provider.Provider_Composite limit 5;")

这会引发以下错误:

Error in postgresqlExecStatement(conn, statement, ...) : 
RS-DBI driver: (could not Retrieve the result : ERROR:  relation "provider.provider_composite" does not exist
LINE 1: select * from provider.Provider_Composite limit 5;
^

例如,如果我使用R命令的带引号的部分(换句话说,就是实际的postgres查询(并将其直接粘贴到PGAdmin中,它就会提取正确的表。但在R中的dbGetQuery命令中,它不起作用。

有什么想法吗?

这可能会有所帮助:

test_get <- dbGetQuery(con, 'select * from "provider.Provider_Composite" limit 5;')

(语句周围单引号,表格周围双引号(

您需要将表名双引号引起来,因为它有大写字母。

test_get <- dbGetQuery(con, 'select * from provider."Provider_Composite" limit 5;')

双引号不适用于@nina van brugen建议的schema.table地址。如有必要,您必须单独引用每个名称字符串因此,我尝试在PostgreSQL数据库中只使用小写名称

最新更新