Die mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.
Wie bereits erwähnt, habe ich meine Daten seither in eine SQLite Datenbank geschrieben. Da ich diese Daten weiterhin behalten möchte, habe ich diese wie folgt in die MariaDB importiert:
Damit Ihr Eure SVG Plots nicht nach der Migration anpassen müsst, müsst Ihr das FHEM DBLog Device erstmal umbenennen. Hierfür könnt Ihr den FHEM Befehl "rename" verwenden. Zusätzlich solltet Ihr das FHEM DBLog Device so anpassen, dass es keine Daten mehr sammelt. Hierfür könnt Ihr den FHEM Befehl "defmod" verwenden. Mit folgenden Beispiel-Befehlen könnt Ihr diese Aktionen durchführen:
rename fhem.dblog fhem.dblog.old
defmod fhem.dblog.old DbLog ./sqlite.conf 1234:5678
Jetzt sollte Ihr gleich das neue FHEM DBLog Device anlegen. Damit Eure SVG Plots direkt wieder funktionieren, solltet Ihr hier natürlich den alten FHEM Namen verwenden. Eine Anleitung zum Verbinden der neuen MariaDB, findet Ihr hier.
Um die Daten der alten Datenbank zu exportieren, verbindet Ihr Euch per SSH mit dem FHEM Server. Zum Exportieren müsst Ihr folgende Schritte machen:
Als erstes wechselt Ihr in das Verzeichnis in welcher eure Datenbank liegt. Dort erstellt Ihr dann das Perl Skript. Folgende Befehle müsst Ihr dafür ausführen:
cd /opt/fhem
sudo nano changesql.pl
Jetzt könnt Ihr den Inhalt des Perl Skriptes in den Nano Editor kopieren, und die Datei abspeichern.
#! /usr/bin/perl
while ($line = <>){
if (($line !~ /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/) && ($line !~ /PRAGMA foreign_keys=OFF/)){
if ($line =~ /CREATE TABLE \"(\w*)\"(.*)/){
$name = $1;
$sub = $2;
$sub =~ s/\"//g;
$line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n";
}
elsif ($line =~ /INSERT INTO \"(\w*)\"(.*)/){
$line = "INSERT INTO $1$2\n";
$line =~ s/\"/\\\"/g;
$line =~ s/\"/\'/g;
}else{
$line =~ s/\'\'/\\\'/g;
}
$line =~ s/([^\\'])\'t\'(.)/$1THIS_IS_TRUE$2/g;
$line =~ s/THIS_IS_TRUE/1/g;
$line =~ s/([^\\'])\'f\'(.)/$1THIS_IS_FALSE$2/g;
$line =~ s/THIS_IS_FALSE/0/g;
$line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
$line =~ s/(.*)varchar([^\(0-9\)].*)/$1varchar\(255\)$2/g;
print $line;
}
}
Quelle: https://pastebin.com/MXqp6KNs
Mit folgendem Befehl könnt Ihr jetzt die SQLite Daten exportieren. Die Position "fhemsql3.db" müsst Ihr mit dem Namen Eurer Datenbank ausfüllen.
sudo sqlite3 fhemsql3.db .dump > export.sql
Nachdem die Daten erfolgreich exportiert wurden, müsst Ihr die Daten jetzt noch in ein MariaDB konformes Format umwandeln. Hierfür führt ihr folgenden Befehl aus:
sudo perl changesql.pl export.sql > import.sql
Als letzten Schritt müsst Ihr die Daten jetzt in Eure MariaDB importieren. Hierfür müsst Ihr folgenden Befehl ausführen. An der Position "-h" müsst Ihr die IP-Adresse Euers MariaDB Server eintragen. Falls Ihr den Port Eures MariaDB Server angepasst habt, müsst Ihr die Position "-P" ebenfalls abändern.
sudo mysql -h 10.10.0.245 -P 3306 -u root -f -p fhem < import.sql
Das Ergebnis sollte dann ungefähr so aussehen:
Damit ist dann die Migration der Daten abgeschlossen.
Zum Abschluss könnt Ihr über die folgenden Befehle noch die temporären Dateien löschen:
sudo rm import.sql
sudo rm export.sql
sudo rm changesql.pl
**