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 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
Code: Alles auswählen
cscript create_h2_script.vbs HmLog.txt.
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);
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';
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