Выберите значения из таблицы, если имя таблицы имеет временную метку в postgreSQL из R - PullRequest
0 голосов
/ 12 марта 2019

Я подключился из R к PostgreSQL, и я могу написать таблицу, используя метку времени в качестве имени таблицы, но я не могу извлечь значения.

Я использовал следующий код.

library(DBI)
con <- dbConnect(RPostgres::Postgres(),dbname = 'postgres', 
       host = 'hostname', 
       port = 5432, 
       user = 'username',
       password = 'pwd')
tm<-paste0('job_status_',Sys.time())
dbWriteTable(con,tm,jbs)
dbGetQuery(con,paste0('select * from ',tm))

Когда я запустил команду select, я получил следующую синтаксическую ошибку:

Error in result_create(conn@ptr, statement) : 
Failed to prepare query: ERROR:  syntax error at or near "-"
LINE 1: select * from job_status_2019-03-12 04:33:08

Может ли кто-нибудь помочь мне решить эту проблему?!

1 Ответ

1 голос
/ 12 марта 2019

Поскольку имя вашей таблицы содержит символы - :, его необходимо заключить в кавычки ", чтобы понимать его как имя таблицы.

dbGetQuery(con,paste0('select * from "',tm, '"'))

КСТАТИ. Это может быть хорошей идеей избегать необычных символов в именах таблиц и ограничивать себя только буквами, цифрами и подчеркиванием (_). Для этого вы можете использовать gsub().

tm<-gsub('-|:| ', '_', paste0('job_status_',Sys.time()))
dbWriteTable(con,tm,jbs)
dbGetQuery(con,paste0('select * from ',tm))
...