У меня есть следующий фрейм данных:
library(rpostgis)
library(RPostgreSQL)
library(glue)
df<-data.frame(elevation=c(450,900),
id=c(1,2))
Теперь я пытаюсь загрузить это в таблицу в моей базе данных PostgreSQL / Postgis. Мое соединение (dbConnect) правильно работает для "SELECT" -Statements. Тем не менее, я попытался два способа обновления таблицы базы данных с этим кадром данных, и оба не удалось.
Первый:
pgInsert(postgis,name="fields",data.obj=df,overwrite = FALSE, partial.match = TRUE,
row.names = FALSE,upsert.using = TRUE,df.geom=NULL)
2 out of 2 columns of the data frame match database table columns and will be formatted for database insert.
Error: x must be character or SQL
Я не знаю, что пытается сообщить мне ошибка, поскольку оба значения в кадре данных и в таблице установлены в целое число.
Второй :
sql<-glue_sql("UPDATE fields SET elevation ={df$elevation} WHERE
+ id = {df$id};", .con = postgis)
> sql
<SQL> UPDATE fields SET elevation =450 WHERE
id = 1;
<SQL> UPDATE fields SET elevation =900 WHERE
id = 2;
dbSendStatement(postgis,sql)
<PostgreSQLResult>
В обоих случаях данные не передаются в базу данных, и я не вижу никаких журналов ошибок в базе данных.
Есть ли какие-либо подсказки о том, как решить эту проблему?