Skip to content

Commit

Permalink
influxdb: add database conversion script to docu
Browse files Browse the repository at this point in the history
  • Loading branch information
onkelandy committed Nov 2, 2023
1 parent 3ce667f commit a6fa101
Showing 1 changed file with 55 additions and 6 deletions.
61 changes: 55 additions & 6 deletions influxdb2/user_doc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,6 @@ Mit jedem Item Wert, der in einem InfluxDB Bucket abgelegt werden, werden folgen
- **str_value** - enthält nicht numerische Werte, die in der Datenbank abgelegt werden sollen.




Konfiguration
=============

Expand All @@ -100,12 +98,63 @@ Die Plugin Parameter und die Informationen zur Item-spezifischen Konfiguration d
unter :doc:`/plugins_doc/config/influxdb2` nachzulesen.


Beispiele
---------
Daten aus dem Database Plugin transferieren
===========================================

Diese Anleitung wurde unter influxdb2 getestet und muss eventuell für influxdb1 adaptiert werden.

1. Pandas und influxdb_client Module für Python installieren
2. CSV-Dump aus dem Webinterface des Datenbank-Plugins herunterladen
3. Anpassen der Zugriffsparameter im unten stehenden Skript
4. Anpassen des Pfads zur CVS-Datei
5. Ausführen des Skripts
6. Abhängig von der Größe der Datenbank ist Geduld gefragt.


.. code-block:: python
from influxdb_client import InfluxDBClient
from influxdb_client.client.write_api import SYNCHRONOUS
import pandas as pd
# ----------------------------------------------
ip = "localhost"
port = 8086
token = "******************"
org = "smarthomeng"
bucket = "shng"
value_field = "value"
str_value_field = "str_value"
csvfile = "smarthomeng_dump.csv"
# ----------------------------------------------
client = InfluxDBClient(url=f"http://{ip}:{port}", token=token, org=org)
write_api = client.write_api(write_options=SYNCHRONOUS)
df = pd.read_csv(csvfile, sep=';', header=0)
df = df.reset_index()
num_rows = len(df.index)
last_progress_percent = -1
for index, row in df.iterrows():
progress_percent = int((index/num_rows)*100)
if last_progress_percent != progress_percent:
print(f"{progress_percent}%")
last_progress_percent = progress_percent
p = {'measurement': row['item_name'], 'time': int(row['time']) * 1000000,
'tags': {'item': row['item_name']},
'fields': {value_field: row['val_num'], str_value_field: row['val_str']}
}
write_api.write(bucket=bucket, record=p)
client.close()
Hier können ausführlichere Beispiele und Anwendungsfälle beschrieben werden.
...
Web Interface
=============
Expand Down

0 comments on commit a6fa101

Please sign in to comment.