【发布时间】:2019-06-09 16:03:34
【问题描述】:
我正在尝试将空间表写入不是 PostgreSQL 数据库中默认公共架构的架构。
library(sf)
library(DBI)
library(RPostgreSQL)
library(spData)
# PostgreSQL DB parameters
host <- "myHost"
port <- 5432
username <- "myName"
dbname <- "myDb"
password <- "MyPassword"
# Connect to db
conn <- dbConnect(PostgreSQL(), dbname = dbname, host = host, port = port, user = username, password = password)
st_write(obj = cycle_hire, dsn = conn, Id(schema="myOtherSchema", table = "myCycle")) # Write data to db - currently only writes to default schema
# Disconnect db
dbDisconnect(conn)
但这会将我的表添加到名为 "myOtherSchema"."myCycle" 的公共架构中。
上面也试过...
dbWriteTable(conn = conn, name = "myCycle", value = cycle_hire, Id(schema="mySchema"))
...替换st_write,这导致myCycle 被写入公共架构。
我做错了什么?
会话信息:
R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server >= 2012 x64 (build 9200)
在 Centos 7 操作系统上运行 PostgreSQL 11.1。
【问题讨论】:
-
我会尝试使用包
RPostgres进行连接:conn -
@lbusett 没有包
RPostgres -
您尝试安装了吗(
install.packages("RPostgres")? -
@lbusett 啊哈。看看谷歌搜索给你带来了什么。 OK 运行
conn <- dbConnect(Postgres(), dbname = dbname, host = host, port = port, user = username, password = password)然后st_write(obj = cycle_hire, dsn = conn, Id(schema="roads_spatial", table = "myCycle"))并得到Error in st_write.sf(obj = cycle_hire, dsn = conn, Id(schema = "roads_spatial", : no st_write method available for dsn of class list -
很高兴它有帮助。只是想用
RPostgreSQL你可以尝试一下: st_write(obj = cycle_hire, dsn = conn, layer = c("myOtherSchema", "myCycle")) (见github.com/r-spatial/sf/issues/557)
标签: r postgresql sf