Skip to content

Commit

Permalink
Merge pull request #850 from onkelandy/influxdb
Browse files Browse the repository at this point in the history
Influxdb: Add database conversion info to docu and fix code-blocks
  • Loading branch information
msinn authored Dec 16, 2023
2 parents cdaf03e + eb736b5 commit 038c47e
Showing 1 changed file with 60 additions and 3 deletions.
63 changes: 60 additions & 3 deletions influxdb/user_doc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ items.yaml
Logging in eine Messung namens ``root.some_item``, Standard-Tags und
Tags/Felder wie in plugin.yaml angegeben

.. code:: yaml
.. code-block:: yaml
root:
some_item:
Expand All @@ -67,7 +67,7 @@ Tags/Felder wie in plugin.yaml angegeben
Wenn ``keyword`` in der plugin.yaml auf ``sqlite`` gesetzt wird, kann dies auch
als Ersatz für sqlite verwendet werden.

.. code:: yaml
.. code-block:: yaml
root:
some_item:
Expand All @@ -77,7 +77,7 @@ als Ersatz für sqlite verwendet werden.
Tag ``room`` und Standard-Tags (einschließlich ``item: root.dining_temp``) und
Tags/Felder wie in plugin.yaml angegeben

.. code:: yaml
.. code-block:: yaml
root:
dining_temp:
Expand Down Expand Up @@ -118,6 +118,63 @@ Insbesondere diese:
- `Vermeiden Sie die Kodierung von Daten in Messnamen <https://docs.influxdata.com/influxdb/v1.8/concepts/schema_and_data_layout/#avoid-encoding-data-in-measurement-names>`_
- Vermeiden Sie mehr als eine Information in einem Tag <https://docs.influxdata.com/influxdb/v1.8/concepts/schema_and_data_layout/#avoid-putting-more-than-one-piece-of-information-in-one-tag>`_

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()
Web Interface
=============

Expand Down

0 comments on commit 038c47e

Please sign in to comment.