Metainformationen zur Seite
7. Daten ins CSV Format konvertieren
Das nachfolgende Beispiel stammt vom LoxForum's User deepflash: https://www.loxforum.com/forum/projektforen/loxberry/plugins/315626-stats4lox-das-statistik-plugin?p=465312#post465312
Anleitung
Das nachfolgende Bash-Skript liest die Influxdb aus und wandelt alle Messkanäle in einzelne csv-Dateien um. Folgende Zeilen müssen angepasst werden:
- INFLUX_HOST="IPLoxberry"
- DB_NAME="stats4lox"
- USER="stats4lox"
- PASSWORD="PW"
Das Influxdb Passwort bekommt man über die credentials Datei unter /opt/loxberry/config/stats4lox
und die IP ist diejenige vom LoxBerry. Das Skript muss vor dem Ausführen mit chmod +x <scriptname>
ausführbar gemacht werden.
Skript
- influx2csv.sh
#!/bin/bash export LC_ALL=C # Enforce clean ASCII output INFLUX_HOST="IPLoxberry" DB_NAME="stats4lox" USER="stats4lox" PASSWORD="PW" # Hole alle Measurements als Array readarray -t MEASUREMENTS < <( curl -skG "https://$INFLUX_HOST:8086/query?db=$DB_NAME" \ --user "$USER:$PASSWORD" \ --data-urlencode "q=SHOW MEASUREMENTS" \ -H "Accept: application/json" | \ jq -r '.results[0].series[0].values[][0]' ) for MEASUREMENT in "${MEASUREMENTS[@]}"; do echo "=== Exportiere Measurement: $MEASUREMENT ===" # Roh-CSV mit Zeit und Default Spalte exportieren curl -sk -G "https://$INFLUX_HOST:8086/query?db=$DB_NAME" \ --user "$USER:$PASSWORD" \ --data-urlencode "q=SELECT time, "Default" FROM "$MEASUREMENT"" \ -H 'Accept: application/csv' > "${MEASUREMENT}_raw.csv" LINECOUNT=$(wc -l < "${MEASUREMENT}_raw.csv") if [[ "$LINECOUNT" -le 1 ]]; then echo "!!! Keine Daten für $MEASUREMENT - Überspringe Export" rm -f "${MEASUREMENT}_raw.csv" continue fi # Kopfzeile ersetzen und nur Zeit und Default-Werte extrahieren { echo "time,${MEASUREMENT}" tail -n +2 "${MEASUREMENT}_raw.csv" | awk -F',' '{print $3 "," $4}' } > "${MEASUREMENT}.csv" rm -f "${MEASUREMENT}_raw.csv" echo ">>> Export abgeschlossen: ${MEASUREMENT}.csv" done echo "=== Alle Messungen exportiert ==="