Вставить json в бд

Я пытаюсь вставить данные json в db. Пример json:

{ 
"events": 
  [{                                                                                                   
     "timestamp": 1298734,                                                                                               
     "message": "START RequestId: bjn937645",                                                    
     "ingestiontime": 123456                                                                       
  }]
}

Таблица:

Create table events(id, timestamp, message, ingestion_time) 

Я могу получить временную метку и значения сообщения, но ingestion_time имеет значение NULL. Я пытаюсь получить вложенные значения и преобразовать отметку времени эпохи в дату и время. Спасибо

Пожалуйста, редактировать ваш вопрос и добавьте полное и точное утверждение insert, которое вы используете (редактировать ваш вопрос, не добавляйте код или дополнительную информацию в комментарии)

a_horse_with_no_name 09.04.2022 10:24

Вы хотите «Вставить json» или «Вставить значения, полученные из json»?

Luuk 09.04.2022 10:32

123456/3600 = 34,29. это больше 24. Итак, последний столбец представляет значение в секундах?

Mark 09.04.2022 11:46

для инъекции_время 123456 вы имеете в виду: 12:34:56?

Mark 09.04.2022 12:05

Я хочу вставить значения, полученные из json, и да, Марк, я имею в виду 12:34:56. Спасибо ребята

John M 09.04.2022 20:30
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
5
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
insert into events (timestamp, message, ingestion_time)
select a.json#>>'{events,0,timestamp}', a.json#>>'{events,0,message}', to_timestamp(cast(a.json#>>'{events,0,ingestiontime}' AS integer))
  from (select
'{ 
"events": 
  [{                                                                                                   
     "timestamp": 1298734,                                                                                               
     "message": "START RequestId: bjn937645",                                                    
     "ingestiontime": 123456                                                                       
  }]
}' :: json AS json) AS a

см. тест в dbfiddle

это сработало путем приведения к BIGINT. Как вставить несколько записей?

John M 09.04.2022 22:11

Другие вопросы по теме