繁体   English   中英

无法使用RPostgres dbWriteTable在PostgreSQL中编写时间戳

[英]can't write timestamps in PostgreSQL using RPostgres dbWriteTable

我试图写的R tibble对象(或data.frame )转换成Postgres使用数据库RPostgres包。 根据文档,我尝试使用dbWriteTable函数。

但是,我意识到该方法中没有field.types的规范。 在这里,我提供了一个最小的示例,您可以看到当输入具有POSIXct时间戳时该方法失败(当时间戳被解释为字符时,该方法失败)。

library(dplyr)
library(DBI)
library(RPostgres)
library(tibble)

conn <- dbConnect(RPostgres::Postgres(),
  host = url$host,
  port = url$port,
  dbname = url$dbname,
  user = url$user,
  password = url$password
)

test <- tibble(
  words = c("hallo","ja", "nein"),
  value = c(3,4,5),
  time= as.POSIXct(c("2016-05-04 04:32","2016-06-02 09:37","2016-07-12 10:43")))
test2 <- tibble(
  words = c("hallo","ja", "nein"),
  value = c(3,4,5),
  time= c("2016-05-04 04:32","2016-06-02 09:37","2016-07-12 10:43"))

dbWriteTable(conn = conn, name = "words", value = test)
> Error in eval(substitute(expr), envir, enclos) :
> ERROR:  invalid input syntax for type real: "2016-05-04 04:32:00"
> CONTEXT:  COPY words, line 1, column time: "2016-05-04 04:32:00"

dbWriteTable(conn = conn, name = "words2", value = test2)
> [1] TRUE

有谁知道使用RPostgres使用时间戳编写表的更好方法吗?

RPostgreSQL软件包中使用PostgreSQL驱动程序是RPostgreSQL 另外,第三个时间戳的格式与as.POSIXct的默认格式不匹配-小时的数字过多。 所以我将"2016-07-12 010:43"更改为"2016-07-12 10:43" ,您应该会发现它工作正常。

library(dplyr)
library(DBI)
library(RPostgreSQL)
library(tibble)

#connect to db    
url <- list(user="postgres",password="postgres",dbname="test")

conn <- dbConnect(drv="PostgreSQL", user=url$user, password=url$password, dbname = url$dbname)


test <- tibble(
  words = c("hallo","ja", "nein"),
  value = c(3,4,5),
  time= as.POSIXct(c("2016-05-04 04:32","2016-06-02 09:37","2016-07-12 10:43")))
test2 <- tibble(
  words = c("hallo","ja", "nein"),
  value = c(3,4,5),
  time= c("2016-05-04 04:32","2016-06-02 09:37","2016-07-12 010:43"))


dbWriteTable(conn = conn, name = "words", value = test)

[1]是

dbWriteTable(conn = conn, name = "words2", value = test2)

[1]是

dbDisconnect(conn)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM