SQLite3 DB Im-Export von bestimmten Spalten einer Tabelle weewx.sdb

wenn es um andere Software geht
Benutzeravatar
JoachimF
Beiträge: 222
Registriert: 08 Dez 2021 20:29
Wohnort: Carces
Hat sich bedankt: 1 mal
Kontaktdaten:

SQLite3 DB Im-Export von bestimmten Spalten einer Tabelle weewx.sdb

Beitrag von JoachimF »

Ich möchte von einer 'Sicherungs-DB' bestimmte Spalten einer Tabelle innerhalb eines bestimmten Zeitraums exportieren, wobei ich nicht weis wie ich das Exportieren zu machen habe.
Die Abfrage sieht wie folgt aus:
SELECT "barometer","rain" FROM "archive" WHERE "dateTime" > '1659729600' AND "dateTime" < '1660459980'

Falls ein Export (als csv Datei) geht, kann ich diese Datei dann ich die richte DB importieren,
d.h. die falschen Werte überschreiben ?
Oder ist dieses Unterfangen so überhaupt nicht möglich?

Oder muss ich den kompletten Zeitabschnitt aus der Sicherungs-DB exportieren,
dann diesen Zeitabschnitt der richtigen DB komplett löschen und anschließend den Export importieren?
Gruß Joachim

https://puttkammer.de
Benutzeravatar
Werner
Site Admin
Beiträge: 5674
Registriert: 04 Dez 2001 01:00
Wohnort: Lackenhäuser
Danksagung erhalten: 58 mal
Kontaktdaten:

Re: SQLite3 DB Im-Export von bestimmten Spalten einer Tabelle weewx.sdb

Beitrag von Werner »

@Joachim,

SELECT "barometer","rain" FROM "archive" WHERE "dateTime" > '1659729600' AND "dateTime" < '1660459980'
Ich würde vorher alle nicht zu modifizierenden Datensätze aus der Datenbank löschen (Beispiel),
Tagestabelle dabei nicht vergessen:

Code: Alles auswählen

DELETE FROM archive WHERE datetime(datetime,'unixepoch','localtime') < '2022-07-20 18:05:00';
DELETE FROM archive WHERE datetime(datetime,'unixepoch','localtime') > ' 2022-04-09 23:55:00';
DELETE FROM archive_day_barometer WHERE datetime(datetime,'unixepoch','localtime') < '2022-07-20 18:05:00';
DELETE FROM archive_day_barometer WHERE datetime(datetime,'unixepoch','localtime') > '2022-04-09 23:55:00';
Wie schon erwähnt bietet sich dazu "DB Browser for SQLite" an.
Hier kannst Du die Tabellen (auswählbar welche) im SQL-Format exportieren.
In der dabei erzeugten SQL-Datei die Statements "INSERT" durch "REPLACE" ersetzen und dann in die andere Daten importieren.
... und immer mit BACKUP arbeiten ;)

Im RasPI und Weewx kann man nur neuere Werte importieren, vorhandene ersetzen ist mir nicht bekannt,
könnte eventuell mit der V4.8.0 gehen ?

Wichtig ist bei Weewx auch, wenn man die Datenbank "extern" modifiziert:
Eventuell zu berechnente Werte (wie Windchill, Taupunkt ...) neu berechnen lassen, sonst fehlen sie.
Du musst auch für den geänderten Importierten Zeitraum die täglichen Werte noch aktualisieren:

Code: Alles auswählen

sudo wee_database --config=/etc/weewx/weewx.conf --calc-missing --from=2022-??-?? --to=2022-??-??

sudo wee_database --config=/etc/weewx/weewx.conf --rebuild-daily --from=2022-??-?? --to=2022-??-??
--config= eventuell anpassen! und natürlich auch --from= und --to=
Benutzeravatar
JoachimF
Beiträge: 222
Registriert: 08 Dez 2021 20:29
Wohnort: Carces
Hat sich bedankt: 1 mal
Kontaktdaten:

Re: SQLite3 DB Im-Export von bestimmten Spalten einer Tabelle weewx.sdb [erledigt]

Beitrag von JoachimF »

@Werner,
das Überspielen der Daten aus der Sicherungsdatei gestaltet sich fast unmöglich, weil, ich hatte es vergessen, der Sicherungsraspi alle 60 sec. aufzeichnet und der 2-Instanzen alle 120 sec.. Die Anzahl passt nicht und dann stimmen die dateTime's der beiden DB's auch nicht.
Die Datensätze von 6 betroffenen Spalten über ca. 7 Tage manuell zu bearbeiten, werde ich nicht machen.
Gruß Joachim

https://puttkammer.de
Antworten