Migration CUxD-HighChart zu CCU-Historian

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

Antworten
Benutzeravatar
wak
Beiträge: 24
Registriert: 05.05.2014, 00:21

Migration CUxD-HighChart zu CCU-Historian

Beitrag von wak » 07.03.2019, 23:14

Hallo,

da ich nun CCU-Historian zum Protokullieren verwende, wollte ich natürlich meine alten CUxD-Log teilweise migrieren.

Hier meine Vorgehensweise:

1. Neues Verzeichnis auf einen Win-PC erstellen

2. Alle CUxD-Log (HmLog.txt.2019... ) in dieses Verzeichnis kopieren.

3. Erzeugen einer Liste der zu migrierenden Daten-Punkte über die bereits laufende CCU-Historian.
Dazu habe ich das H2-Datenbank Web-Tool verwendet und folgenden SQL-Befehl abgesetzt:
SELECT CONCAT(address ,'.' , identifier,'|', display_name,'|', table_name ) FROM DATA_POINTS where BITAND(state,16) = 16;
Die erzeugte Liste habe ich via Texteditor in folgende Dateigespeichert: ImportFilter.csv
Bitte nur die Zeilen in der ImportFilter.csv aufnehmen, die wirklich gebraucht werden und ebenso in obiges Verzeichnis ablegen.

4. folgendes VB-Script in obiges Verzeichnis kopieren und entpacken
create_h2_script.zip
(1.12 KiB) 4-mal heruntergeladen
5. im Create_h2_script.vbs auf Zeile 86 sollte man noch das maximale Datum anpassen, bis dahin werden TS+Werte für CCU-Historian erzeugt
if cdate(strDate + " " + strTime) < cdate("2019-01-22 20:37:59") and dictLast.Item(arrItem(1)) <> arrItem(2) then

6. das vb-script kann man mit folgendem Befehl aus der cmd-Line für nur 2018 wie folgt starten

Code: Alles auswählen

cscript create_h2_script.vbs HmLog.txt.2018
oder und ohne 2018 am Ende für alle Dateien

Code: Alles auswählen

cscript create_h2_script.vbs HmLog.txt.
Das Script läuft über alle gefunden Dateien mit Anfang HmLog.txt.... und sucht nach Einträgen aus ImportFilter.csv, damit erzeugt es dann eine SQL-Script Datei die wie folgt aussieht, es werden bei Datenpunkte nur geänderte Werte übergeben, gleiche werden unterdrückt, falls das nicht gewünscht wird einfach Zeile 84 und 89,90 auskommentieren oder löschen:
Name: h2_script.sql
Inhalt:

Code: Alles auswählen

MERGE INTO D_CUXD_CUX9001004_1_STATE (TS, VALUE, STATE) key(TS) VALUES (TIMESTAMP '2015-12-31 00:00:01.000', 0, 0);
MERGE INTO D_CUXD_CUX9002016_1_TEMPERATURE (TS, VALUE, STATE) key(TS) VALUES (TIMESTAMP '2015-12-31 00:00:04.000', 43.250000, 0);
MERGE INTO D_CUXD_CUX9000002_1_HELLIGKEIT (TS, VALUE, STATE) key(TS) VALUES (TIMESTAMP '2015-12-31 00:00:05.000', 2.000000, 0);
MERGE INTO D_CUXD_CUX9002016_1_TEMPERATURE (TS, VALUE, STATE) key(TS) VALUES (TIMESTAMP '2015-12-31 00:03:01.000', 42.000000, 0);
MERGE INTO D_CUXD_CUX9000002_1_HELLIGKEIT (TS, VALUE, STATE) key(TS) VALUES (TIMESTAMP '2015-12-31 00:03:01.000', 1.000000, 0);
7. Nach dem erstellen der h2_script.sql kopiert man diese via winscp auf den CCU-Historian server in z.b. Verzeichnis /tmp

8. nun kann man über das H2-Datenbank Web-Tool das SQL-Script mit folgendem Befehlt starten:

Code: Alles auswählen

RUNSCRIPT FROM '/tmp/h2_script.sql';
Hier bekommt man leider keine Anzeige wie lang das ganze noch läuft ....

Bitte unbedingt vorher eine Sicherung das Datenbank machen und etwas Gedult mitbringen. Bei mir habe ich über diese Vorgehensweise über 1 Mio. Datensätze bereits erfolgreich migriert.

Den MERGE habe ich bewußt statt den Befehlt INSERT verwendet, damit man das SQL-Script bei einem Abbruch einfach nochmals starten könnte.

Viel Spaß beim Migrieren
wak

Antworten

Zurück zu „CCU-Historian“