r - 在 PostgreSQL 中使用 r sf::st_write 到非公共模式
问题描述
我正在尝试将空间表写入不是 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。
解决方案
发生这种情况是因为您通过 package 连接到 db RPostgreSQL
,但用于指定 table 和 schema 的语法与使用 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"))
推荐阅读
- asp.net - Google Chrome 不显示来自 asp.net 页面的 PDF
- java - 通过 GUI 插入 jButton 事件时由 netbeans 自动编码生成的多个错误
- java - 修复 int 转换并为类添加返回
- maven - JUnit - 除了@Test 注释之外的所有注释都有效
- mongodb - 替换 mongo db 中的文档不会更新时间戳。架构级别有什么替代方案吗?
- r - 保留带有前导零数字的站标识符
- laravel - 约束急切加载的关系以及嵌套关系 - Laravel 8
- c++ - R - 在 linux redhat 发行版上安装 processx 包时,仅在 C99 模式下允许“for”循环初始声明
- azure-data-factory-2 - ADF 数据流源 - SQL Server 不可选
- javascript - 在不和谐服务器中查找真实人数 [discord.js]