Я пытаюсь вставить данные json в db. Пример json:
{
"events":
[{
"timestamp": 1298734,
"message": "START RequestId: bjn937645",
"ingestiontime": 123456
}]
}
Таблица:
Create table events(id, timestamp, message, ingestion_time)
Я могу получить временную метку и значения сообщения, но ingestion_time имеет значение NULL. Я пытаюсь получить вложенные значения и преобразовать отметку времени эпохи в дату и время. Спасибо
Вы хотите «Вставить json» или «Вставить значения, полученные из json»?
123456/3600 = 34,29. это больше 24. Итак, последний столбец представляет значение в секундах?
для инъекции_время 123456 вы имеете в виду: 12:34:56?
Я хочу вставить значения, полученные из json, и да, Марк, я имею в виду 12:34:56. Спасибо ребята
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. Как вставить несколько записей?
Пожалуйста, редактировать ваш вопрос и добавьте полное и точное утверждение
insert
, которое вы используете (редактировать ваш вопрос, не добавляйте код или дополнительную информацию в комментарии)