Я пытаюсь получить некоторые данные в моем postgres DB из файла CSV, содержащего дамп json. Пока это просто строки, все в порядке, но я хочу, чтобы строки, содержащие временные метки, сохранялись как отметки времени в postgres. Су, мне нужно сделать некоторые преобразования двух полей: registerdate и dateofbirth. Ниже код работает для линий преобразования даты, за исключением ...postgres json parse to timestamp
Любой ключ о том, как успешно преобразовать две строки в метки времени ниже:
CREATE TABLE users (
id SERIAL,
mongo_id TEXT,
password VARCHAR(128),
firstname VARCHAR(200),
lastname VARCHAR(200),
dateofbirth TIMESTAMP,
registerdate TIMESTAMP,
displayname VARCHAR(200),
language VARCHAR(200),
country VARCHAR(200),
profilepicture VARCHAR(200),
backgroundpicture VARCHAR(200),
type VARCHAR(200),
sex VARCHAR(6),
offlinemode BOOLEAN,
email VARCHAR(200),
friends VARCHAR(255)[]
);
INSERT INTO users (mongo_id, password,firstname,lastname, dateofbirth, registerdate, displayname, language)
SELECT data->>'_id',
data->>'password',
data->>'firstName',
data->>'secondName',
to_timestamp(data->'dateOfBirth'->>'$date'), /*<------*/
to_timestamp(data->'registerDate'->>'$date'), /*<-------*/
data->>'displayName',
data->>'language'
FROM import.mongo_users;
Формат данных в mongo_users:
{ "_id" : "1164", "password" : "aaa123123", "firstName" : "Adam", "secondName" : "Kowlalski", "dateOfBirth" : { "$date" : "2014-05-18T07:41:09.202+0200" }, "registerDate" : { "$date" : "2016-06-01T12:59:53.941+0200" }, "displayName" : "Adam Kowlalski", "language" : "nb", "country" : null, "profilePicture" : null, "backgroundPicture" : null, "type" : "USER", "sex" : "MALE", "offlineMode" : true, "email" : "[email protected]", "friends" : [ "KUE" ] }
Обратите внимание, что в данном конкретном случае она также содержит данные часового пояса ('+ 0200'), так что шаблон будет отбрасывать эту информацию (хотя это может быть излишним в любом случае, в данном конкретном случае) –
спасибо, я добавил подсказку – rarspace01