我使用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