我在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数据库中只使用小写名称