djq*_*djq 19 postgresql r
我正在使用RPostgreSQL来读写数据.从任何模式读取工作都很完美,但我无法写入非公共模式.例如,以下代码将一个表放在public模式中,并使用名称myschema.tablex
# write dataframe to postgres
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host="localhost", user="postgres", password="zzzz", dbname="mydatabase", port="5436")
if(dbExistsTable(con,"myschema.tablex")) {
dbRemoveTable(con,"myschema.vkt_tablex")}
dbWriteTable(con,"myschema.tablex", dataframe, row.names=F)
Run Code Online (Sandbox Code Playgroud)
我想要做的是将表tablex放在模式中myschema.我还尝试在连接中命名模式:dbname="mydatabase.myschema"并尝试schemaname我在前面的bug中提到的参数.
这些方法都不起作用,所以我想知道是否还有其他方法可以使用.
Tom*_*eif 42
用这个:
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "db", host = "host", port = 5432,
user = "user", password = "pwd")
dbWriteTable(con, c("yourschema", "yourtable"), value = yourRdataframe)
dbDisconnect(con)
Run Code Online (Sandbox Code Playgroud)
更多详情:https://stat.ethz.ch/pipermail/r-sig-db/2011q1/001043.html
创建对象的默认架构由search_path.一种方法是相应地设置它.例如:
SET search_path = myschema, public;
Run Code Online (Sandbox Code Playgroud)
我引用手册:
在未指定特定目标模式的情况下创建对象时,它们将被放置在搜索路径中列出的第一个模式中.如果搜索路径为空,则报告错误.
您还可以将其设置为角色的默认值,因此会为此角色的每个连接自动设置该角色.更多: