【问题标题】:Setting the schema name in postgres using R使用 R 在 postgres 中设置模式名称
【发布时间】:2018-03-05 20:39:30
【问题描述】:

我正在使用 R 连接到 PostgreSQL 数据库。使用以下函数完成连接:

dbConnect(m, dbname=dbname, host=host, port=port, user=user, password=password)

m 是驱动程序(postgres)。

但它不允许我设置我的表所在的特定模式名称。如何连接到特定架构,这样每次我不必在表名前加上架构名称前缀?

R 中是否有与set search_path = 'myschema' 等效的语句?

【问题讨论】:

  • 你可以运行ALTER ROLE username SET search_path = schema1,schema2,schema3;服务器端...
  • 不知道你用的是哪个包。在 RODBC 中,您可以执行 library (RODBC)co <- odbcConnect( 'thedata' )odbcQuery (co, 'SET search_path = myschema;')
  • 我使用 RPostgreSQL 包。该软件包是否有等效方法?
  • @VaoTsun ALTER ROLE username SET search_path = schema1,schema2,schema3;这是否意味着,默认情况下,我所有的表搜索和创建新表都将发生在 schema1 中?如果我明确写: set search_path = schema2;那么它会在 schema2 下进行操作(默认 schema1 是 schema1)?

标签: r postgresql


【解决方案1】:

你可以使用:

dbConnect(
  m,
  dbname=dbname,
  host=host,
  port=port,
  user=user,
  password=password,
  options="-c search_path=myschema"
)

它适用于RPostgreSQL,也适用于RPostgres

【讨论】:

  • 对于 RPostgres 用户:在我看来,这绝对是 dbConnect 文档中的一个缺陷。这仅对我有用,就像上面一样,并且没有options= 参数名称,即使文档将其放入... 中也是如此。 ... 的描述是针对“其他名称-值对”的,它将您链接到 PostgreSQL 文档以获取命令行选项,但这显然会让您相信 search_path = "myschema" 是预期的语法。基本上,options 是必需的参数。即使它没有列出,而且 R 名称-值对根本不起作用。
猜你喜欢
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2011-02-13
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多