Ein „Pack Table“ ist nicht mit drin:
SQLite kennt ein solches Kommando nicht. Du kannst da nur die Luft aus der ganzen Datenbnk rauslassen. Das Kommando heißt VACUUM, kann aber auf geöffneten Datenbanken nicht ausgeführt werden.
Durch das regelmäßige Löschen ist ein Packen auch im allgeminen nicht notwendig, da die frei gewordenen Blöcke für neue Datensätze verwendet werden.
Ankündigung
Einklappen
Keine Ankündigung bisher.
CSV-Datei importieren - Diagramm anzeigen
Einklappen
X
-
[Offtopic] Nur mal so aus Interesse, Martin: Wird da wie in alten Zeiten nur löschmarkiert, oder ist da auch gleich ein 'pack table' mit drin?Zitat von Msinn Beitrag anzeigenDa alte Werte regelmäßig gelöscht werden, wächst die Datenbank gar nicht erst an.
/tom
Einen Kommentar schreiben:
-
Aber sicher bringt das was!!!!Zitat von Maexle Beitrag anzeigenDann bringt es ja eigentlich nicht wirklich was....
Da alte Werte regelmäßig gelöscht werden, wächst die Datenbank gar nicht erst an.
NUR für den Fall, dass Du das Attribut erst nachträglich setzt, musst Du die Datenbank nach Abschluss des Löschvorgangs einmalig verkleinern. Das Verkleinern kann die Datenbank nun mal nicht, wenn sie online ist.
Einen Kommentar schreiben:
-
-
dd nimmt man üblicherweise, um Partitionen oder ganze Platten zu kopieren bzw. zu clonen.Zitat von Maexle Beitrag anzeigenstimmt "dd" ist ja mehr oder weniger eine 1:1 Kopie --> "cp" wäre wohl richtiger
/tom
Einen Kommentar schreiben:
-
<smarthomeNG-dir>/etc/plugin.yaml, unter database --> driver:Zitat von Maexle Beitrag anzeigenGute Frage... Image für einen RasPi hier aus dem Forum... klick "für SQLite 3 und MySQL"
Vielleicht reicht Dir aber auch schon ein Aufruf von <raspi-ip>:8383/admin aus. Unter Plugins kanns Du das Web IF des Database-Moduls aufrufen, wo Du Dir die Daten ansehen und auch nach csv exportieren kannst. Allerdings sind die Filterfunktionen dort gelinde gesagt 'rudimentär' (zumindest in der alten Version, die ich hier fahre). Daher auch die Empfehlung mit den 'echten' Verwaltungstools für die bei Dir eingesetzte Datenbank.Code:database: plugin_name: database driver: pymysql connect: - host:192.168.178.9 - port:3306 - database:smarthome - user:kennst_du_nicht - password:hättest_du_gern
/tom
Einen Kommentar schreiben:
-
Dann bringt es ja eigentlich nicht wirklich was....Zitat von Msinn Beitrag anzeigennur leerer aber nicht kleiner
Gute Frage... Image für einen RasPi hier aus dem Forum... klick "für SQLite 3 und MySQL"Zitat von Tom Bombadil Beitrag anzeigenSQLite, mySQL/MariaDB, rrd
stimmt "dd" ist ja mehr oder weniger eine 1:1 Kopie --> "cp" wäre wohl richtigerZitat von Tom Bombadil Beitrag anzeigendd = 'disc dump'
Einen Kommentar schreiben:
-
dd = 'disc dump' - ob Du das willst?Zitat von Maexle Beitrag anzeigenDatenbank exportieren -- "Pfad" mittels "dd" auf anderen Rechner
Über welche Datenbank (SQLite, mySQL/MariaDB, rrd) reden wir denn nun?
Danach schauen wir uns an, wie Du an die von Dir gewünschten Daten über das passende Management-Tool bzw. mit 'Bordmitteln' kommst ...
/tom
Einen Kommentar schreiben:
-
Es gibt auch ein Attribut, mit dem man das malimale Alter für Item Werte festlegen kann. Ältere Werte werden dann automatisch gelöscht. Die Datenbank wird dabei nur leerer aber nicht kleiner. Nach dem Löschen einer geoßen Zahl an Einträgen ist es sinnvoll (bei nicht laufende, SmartHomeNG) mit DQLite Bordmitteln die Datenbank zu verdichten.
Achtung: Wenn man das Attribut für Items setzt, für die es viele alte Werte gibt, kann das aufräumen einige Zeit in Anspruch nehmen.
Einen Kommentar schreiben:
-
Danke Tom für deine Rückmeldung.
keine Ahnung was ein "einfacher SQL-Dump" ist...Zitat von Tom Bombadil Beitrag anzeigenobigen csv-Export ... echter, einfacher SQL-Dump
Mit Excel komme ich ganz passabel zurecht. Ein wirkliches Backup der Daten brauche ich auch nicht wirklich.
Ein Beispiel: Bei uns ist es des Öfteren recht windig. Deshalb werden die Werte vom KNX-Windsensor in die DB geschrieben. (Plot-Darstellung letzten paar Stunden/Tage -- die ganzen "Spielereien" halt.) Kommt es zu einem evtl. Schaden (am Haus etc.) wäre es halt fein, dem Versicherer vorzulegen. "Schau her die letzten 462 Tage war die max. Windgeschwindigkeit 18,2 m/s gestern waren es 23,4 m/s jetzt ist der Rollo kaputt"....
Da ich das in Excel in kurzer Zeit rausziehen kann, wäre das mein Favorit. Für jemanden der sich mit SQL auskennt, ist dieser Zwischenschritt natürlich unnötig.
Programm(e) werde ich mir am Rechner ansehen...
Vorgang: - so richtig?- SHNG stoppen -- sudo systemctl stop smarthome.service
- Datenbank exportieren -- "Pfad" mittels "dd" auf anderen Rechner
- SHNG starten -- sudo systemctl start smarthome.service
Zitat von Tom Bombadil Beitrag anzeigenItems per maxage
Habe ich den database_maxage richtig verstanden? Siehe Beispiel:
Code:# Test Item test: item: type: num database: yes oder init oder true (je nachdem was vorher dort stand) database_maxage: 14 ## 14 Tage bzw. 356 für ein Jahr etc....
Danke Gruß Max
Einen Kommentar schreiben:
-
mySQL / MariaDB csv Export: Klick, SQLite csv Export: Klick. Anschließend die csv in Excel importieren.
Zeitstempel von vor 6 Monaten ermitteln: Klick.
Ein select-Stament zum Löschen sollte in phpMyAdmin oder SQLiteStudio/SQLite3Tool zusammenklickbar sein. Alternativ zum händischen Löschen lassen sich wohl mittlerweile auch die Items per maxage in shNG direkt so konfigurieren, dass sie nur für eine gewisse Zeit vorgehalten werden (habe ich aber noch nicht ausprobiert).
Für fraglich halte ich moment obigen csv-Export - wenn es als Backup dienen soll: Warum nicht gleich ein echter, einfacher SQL-Dump?
/tomZuletzt geändert von Tom Bombadil; 10.01.2022, 14:57.
- Likes 1
Einen Kommentar schreiben:
-
Zitat von Acidrain Beitrag anzeigenin den SQlite-Browser reinkopiere und ausführe. Ist zwar 1x im Monat ein paar Minuten Arbeit,
Hab euch mal mein Excel-Template angehängt.
Hallo zusammen,
ich wäre am umgekehrten Weg interessiert. SHNG-Datenbank als csv, oder Excel-Datei exportieren. Anschließend z.B. alle Werte "Alter > halbes Jahr" aus DB entfernen - ist das möglich?
Einen Kommentar schreiben:
-
Genau so werde ich das auch machen, bin gerade dabei mir eine Smartvisu-App zu bauen, mit der ich Zählerdaten erfassen und in die Smarthome-Datenbank schreiben kann. Kommunikation mit der Visu über JSON, Datenbankzugriff über das SQlite-Paket von PHP. Komme aber momentan nicht dazu, das fertigzustellen.
Wer so lange nicht warten kann: Im Moment importiere ich die Daten manuell. Ich erfasse die Zählerstände per Excel und habe mir mit Formeln die nötigen SQL-Statements zusammengebaut, die ich dann einfach per copy&paste in den SQlite-Browser reinkopiere und ausführe. Ist zwar 1x im Monat ein paar Minuten Arbeit, dafür sieht es in der Visu gut aus
Hab euch mal mein Excel-Template angehängt.
Viele Grüße
Dominik
- Likes 1
Einen Kommentar schreiben:
-
Als Idee schau mal hier. Du brauchst eigentlich ja gar kein smarthome.py / smartvisu sondern ein wenig code, der die CSV via webserver zur Verfügung stellt und ein wenig Javascript/HTML für die Darstellung. Das kannst Du natürlich zusammen kombinieren...
Gruß,
Bernd
Einen Kommentar schreiben:
-
Hallo Marcel,
man (Du) könnte die Werte direkt in die SQLite DB pumpen, das ist aber nicht so einfach ohne ein bisschen programmieren zu können.
bis bald
Marcus
Einen Kommentar schreiben:


Einen Kommentar schreiben: