Я пытаюсь сделать простой инструмент, который анализирует строки в формате JSON в файле и выполняет операцию INSERT
в базе данных.Полностью Parsing Timestamps в Golang
У меня есть-структуру, которая выглядит следующим образом:
type DataBlob struct {
....
Datetime time.Time `json:"datetime, string"`
....
}
и разбора кода, который выглядит следующим образом:
scanner := bufio.NewScanner(file)
// Loop through all lines in the file
for scanner.Scan() {
var t DataBlob
// Decode the line, parse the JSON
dec := json.NewDecoder(strings.NewReader(scanner.Text()))
if err := dec.Decode(&t);
err != nil {
panic(err)
}
// Perform the database operation
executionString: = "INSERT INTO observations (datetime) VALUES ($1)"
_, err := db.Exec(executionString, t.Datetime)
if err != nil {
panic(err)
}
}
Мой файл JSON имеет линии, каждая из которых содержит значение datetime
который выглядит следующим образом :
{ "datetime": 1465793854 }
При форматировании datetime
как метку времени Unix, то ИАС жалуется:
panic: parsing time "1465793854" as ""2006-01-02T15:04:05Z07:00"": cannot parse "1465793854" as """
В сценарии, который генерирует JSON (также написанный в Golang), я попытался просто напечатать строковое представление Time.time
типа, производя следующее:
{ "datetime": "2016-06-13 00:23:34 -0400 EDT" }
на что ИАС жалуется, когда я иду, чтобы разобрать его:
panic: parsing time ""2016-06-13 00:23:34 -0400 EDT"" as ""2006-01-02T15:04:05Z07:00"": cannot parse " 00:23:34 -0400 EDT"" as "T"
Если я также рассматривать эту временную метку (которая выглядит довольно стандартный) в виде строки и избежать проблем Маршалинга, Postgres жалуется, когда я пытаюсь выполнить вставку:
panic: pq: invalid input syntax for type timestamp: "2016-06-13 00:23:34 -0400 EDT"
Это расстраивает на несколько уровней, но в основном потому что если я сериализую тип Time.time
, я бы подумал, что его следует понимать на другой стороне процесса.
Как я могу разобрать эту метку времени для выполнения ввода базы данных? Извиняется за длинный вопрос и спасибо за вашу помощь!