Sto cercando di creare un semplice strumento che analizzi le righe in formato JSON in un file ed esegua un'operazione INSERT
in un database.Timestamp di analisi completa in Golang
ho una struct che assomiglia a questo:
type DataBlob struct {
....
Datetime time.Time `json:"datetime, string"`
....
}
e l'analisi di codice che assomiglia a questo:
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)
}
}
Il mio file JSON ha linee, ciascuna contenente un valore datetime
che assomiglia a questo :
{ "datetime": 1465793854 }
Quando il datetime
è formattato come un timestamp Unix, il Marshaller lamenta:
panic: parsing time "1465793854" as ""2006-01-02T15:04:05Z07:00"": cannot parse "1465793854" as """
Nello script che genera il JSON (scritto anche in Golang), ho provato semplicemente stampando la rappresentazione String del tipo Time.time
, producendo il seguente:
{ "datetime": "2016-06-13 00:23:34 -0400 EDT" }
al che il Marshaller lamenta quando vado a analizzarlo:
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"
Se Ho anche trattare questo timestamp (che sembra abbastanza standard) come String ed evitare il problema Marshalling, Postgres si lamenta quando si tenta di eseguire l'inserimento:
panic: pq: invalid input syntax for type timestamp: "2016-06-13 00:23:34 -0400 EDT"
Questo è frustrante su una serie di livelli, ma soprattutto perché se serializzo un tipo Time.time
, penso che dovrebbe essere ancora compreso dall'altro lato del processo.
Come posso andare sull'analisi di questo timestamp per eseguire l'inserimento del database? Chiede scusa per la lunga domanda e grazie per il tuo aiuto!