Als ich meine Daten von zwei Influx Datenbanken in eine zusammenführen wollte, war ich überrascht, dass man nicht beides (Export und Import) mit dem CLI influx direkt machen kann.

Influx Measurement exportieren

Um die Daten aus einer Influx Datenbank auszulesen nimmt man folgenden Befehl: influx -database home -format csv -execute "select * from temperature" > /tmp/temperature.csv Es wird hier aus der Datenbank home das Measurement temperature in eine CSV-Datei gespeichert.

Import fehlgeschlagen

Der Versuch diese zu importieren scheitert jedoch:

influx -database private -format csv -path /tmp/temperature.csv -import 2018/02/17 12:33:03 error writing batch: {"error":"unable to parse '
...
ERROR: 11397 points were not inserted

Ich habe mir nur kurz die Parameter angesehen und daraus geschlossen, dass es sinnvoll wäre, wenn man die Daten so einlesen könnte. Wie naiv von mir!

Formatierung für den Import

Die Daten müssen für den Import wie bei einem Insert aufgebaut sein; also in meinem Beispiel: temperature,sensor=livingroom temperature=21 Man muss also die Daten vom CSV-Format in dieses überführen …

Alternative Skripte

Auf github fand ich mehrere Skripte die CSV-Dateien nach Influx konvertieren (oder direkt importieren) diese waren aber alle in Programmiersprachen die nicht installiert waren und vor allem in Programmiersprachen die ich (noch) nicht kann. Ein Bash-Skript hätte ich liebend gerne genommen, das habe ich aber nicht gefunden. Und Bash-Skripte schreiben macht mir keinen Spass, deshalb hab’ ich mich daran gemacht das PowerShell-Skript ConvertTo-Influxdb zu schreiben.

ConvertTo-Influx ausführen

Eine CSV-Datei kann mit dem Skript wie folgt in eine Datei überführt werden, die man direkt mit dem influx CLI importieren kann. ConvertTo-Influx.ps1 -Path /tmp/temperature.csv -Database private > /tmp/temperature.influx

Daten in Influx Datenbank einlesen

Die konvertierten Daten importiert man mit folgendem Befehl: influx -path /tmp/temperature.influx -import