Daten kopieren
Jetzt geht es ans Eingemachte: Wir kopieren die Statistikhistorie mit folgendem SQL:
insert into "statistics" (created, "start", mean, "min", "max", last_reset, state, "sum", metadata_id, created_ts, start_ts, last_reset_ts)
select created, "start", mean, "min", "max", last_reset, state, "sum", :new_id as metadata_id, created_ts, start_ts, last_reset_ts
from "statistics"
where metadata_id = :old_id and start_ts < :magic_ts;
:new_id und :old_id sind die weiter oben identifizierten Pärchen aus altem und neuen Sensor.
:magic_ts ist der oben ermittelte magische Zeitstempel.
Dieses SQL führen wir jeweils für die Pärchen aus Batteriestand und Reichweite aus. Für die Ladeleistung müssen wir W in kW umrechnen, daher verwenden wir dafür ein anderes SQL:
insert into "statistics" (created, "start", mean, "min", "max", last_reset, state, "sum", metadata_id, created_ts, start_ts, last_reset_ts)
select created, "start", mean / 1000 as mean, "min" / 1000 as "min", "max" / 1000 as "max", last_reset, state, "sum", :new_id as metadata_id, created_ts, start_ts, last_reset_ts
from "statistics"
where metadata_id = :old_id and start_ts < :magic_ts;
Das war es auch schon.
Summen werden nicht berechnet, daher müssen wir diese nicht anfassen.