невозможно обновить табличное значение PostgreSQL с помощью s's.time R в качестве символа, используя dbconnect - PullRequest
0 голосов
/ 04 марта 2019

Я использую приведенный ниже код для подключения к PostgreSQL из R.

library(DBI)
con <- dbConnect(RPostgres::Postgres(),dbname = 'postgres', 
         host = host_name, 
         port = 5432, 
         user = user_name,
         password = password)

, используя вышеупомянутое соединение, я попытался обновить таблицу PostgreSQL с помощью sys.time () в R в качестве символа.

Для этого я отправляю приведенный ниже запрос в базу данных.

dbSendQuery(con,paste0("update job_status set start_dttm=",as.character(sys.time()) ," where job_name='job';"))

, но он выдает мне следующую ошибку

Failed to prepare query: ERROR:  syntax error at or near "04"
LINE 1: update job_status set start_dttm = 2019-03-04 04:50:12 where...

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

Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2019

Действительный SQL требует кавычек вокруг даты:

update job_status set start_dttm='2019-03-04 04:50:12';

Следовательно, вам потребуется

paste0("update job_status set start_dttm='", as.character(sys.time(), "';")

Приведенный выше запрос защищен от внедрения SQL, поскольку sys.time() долженбыть в безопасности.Однако в целом (и особенно когда аргументы получены из пользовательского ввода), лучше всего использовать параметризованный SQL, чтобы избежать внедрения SQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...