[英]Adding local tibble to Postgres database where a column is an interval
我正在嘗試向 Postgres 表添加一個條目,其中一列是一個間隔。 但是,我不確定如何將本地 tibble 的列類型轉換為間隔。 正如您想象的那樣,類型差異會導致數據庫不愉快。 有什么辦法可以解決這個問題?
library(dbplyr)
library(dplyr)
con <- my_db_con
df1 <- tibble(my_interval = "P3D")
df2 <- tbl(con, sql("select 'P3D'::interval as my_interval"))
# Will error:
rows_upsert(df2, df1, copy = TRUE)
結果錯誤:
Matching, by = "my_interval"
Error: Failed to prepare query: ERROR: operator does not exist: text = interval
LINE 9: WHERE ("LHS"."my_interval" = "RHS"."my_interval")
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
感謝您的時間。
我(希望)在 dbplyr 的開發版本中修復了這個問題。 通過devtools::install_github("tidyverse/dbplyr")
嘗試一下。 如果這不起作用,請告訴我。 您還有兩種其他可能性可以避免此問題:
types
參數傳遞列類型copy_to(my_db_con, df1, types = c(my_interval = "interval"))
mutate()
df2_copied <- copy_to(my_db_con, df1) %>% mutate(my_interval = sql("my_interval::interval"))
rows_upsert(df1, df2_copied)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.