我正在尝试将空间表写入不是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)
Run Code Online (Sandbox Code Playgroud)
但这会将我的表添加到名称为的公共架构中"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)
Run Code Online (Sandbox Code Playgroud)
在Centos 7 OS上运行PostgreSQL 11.1。
发生这种情况是因为您是通过package连接到db的RPostgreSQL,但是用于指定表和架构的语法是与package进行的连接所使用的语法RPostgres。您可以使用以下方法解决此问题:
require(RPostgres)
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"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |