我使用RPostgreSQL来读取和写入数据。从任何模式读取完美,但我无法写入非公共模式。例如,下面的代码放在一个表中public
架构,名为myschema.tablex
使用RPostgreSQL写入特定模式
# 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)
我想要做的,是将表tablex
在架构myschema
。我也尝试在连接中命名模式:dbname="mydatabase.myschema"
并试图在前面的错误中提到的参数schemaname
。
这些方法都不起作用,所以我想知道是否有另一种方法可以使用。
感谢@Erwin。如果我有五个模式,我是否需要按照我的首选顺序列出它们,或者只是我想用'R'使用的那个? – djq 2012-04-05 17:41:58
@celenius:你不必全部列出。您当前角色可以访问的“search_path”中的第一个模式将用于*对象创建*。所有这些将被*搜索*为了对象,直到他们被发现。其他模式是隐形的。特殊规则适用于系统模式。就像文件系统中的搜索路径一样。手册告诉了这一切。 – 2012-04-05 17:50:39
但请注意,在创建时为表名添加前缀的模式也应该如此。即: 创建模式测试; create table test.abc(i int); \ d test.abc – 2012-04-06 16:21:37