Обновите JSONB в Postgres, используя R - PullRequest
0 голосов
/ 23 апреля 2020

как указано в заголовке, я пытаюсь обновить поле jsonb из R. У меня есть несколько изменений, которые нужно применить. Исходный набор данных создается сторонним приложением, но его необходимо исправить для нескольких строк.

Следующий оператор отлично работает как оператор базы данных:

UPDATE histories set meta=jsonb_set(meta,'{product}','"55-AB"') WHERE id = 17983;

Теперь мне нужно обновите поле «product» для нескольких разных идентификаторов. В качестве примера рассмотрим следующий кадр данных:

df<-data.frame(product=c("55-AB","567-C","UTG-98"),
               id=c(17983,54388,20000))

Обычно я бы использовал sql_glue из пакета glue, но у меня заканчивались кавычки, генерирующие вышеуказанные запросы динамически.

sql_glue("UPDATE histories set meta=jsonb_set(meta,'{product}','"{`df$product`}"') WHERE id = {`df$id`};")

Error: unexpected '{' in "sql_glue("UPDATE histories set meta=jsonb_set(meta,'{pesticide}','"{"

У меня проблемы с цитатой. Есть идеи как обойти это?

...