2025-11-24 11:54:21 +01:00
2025-11-24 11:54:21 +01:00
2025-11-02 10:41:41 +01:00

Import naar Bestaande Database

Aangepast importscript voor je bestaande alfen database met transactions tabel.

📋 Wat doet het script?

Het script importeert transacties uit je CSV bestand naar de bestaande transactions tabel:

  • Leest txstart2 regels (begin van laadsessie)
  • Leest txstop2 regels (einde van laadsessie)
  • Slaat alleen complete transacties op (met start én stop)
  • Slaat mv (meter value) regels over - deze worden niet in de tabel opgeslagen

🚀 Gebruik

1. Pas database credentials aan

Open import_to_existing_db.py en wijzig regel 12-18:

DB_CONFIG = {
    'host': 'localhost',
    'user': 'your_username',      # Jouw MySQL gebruiker
    'password': 'your_password',  # Jouw MySQL wachtwoord
    'database': 'alfen',          # Database naam (default: alfen)
    'charset': 'utf8mb4'
}

2. Installeer Python dependency (als nog niet gedaan)

pip3 install mysql-connector-python

3. Voer import uit

python3 import_to_existing_db.py VAN_01971_Transactions.csv

📊 Output Voorbeeld

============================================================
Charging Station Data Importer
Import naar bestaande 'transactions' tabel
============================================================

✓ Database verbinding succesvol

=== Import gestart: VAN_01971_Transactions.csv ===

  → Transactie 0x0000000000000001 gestart (wacht op stop...)
  ✓ Transactie 0x0000000000000001 opgeslagen (22.049 kWh)
  → Transactie 0x000000001150e1e3 gestart (wacht op stop...)
  ✓ Transactie 0x000000001150e1e3 opgeslagen (0.000 kWh)
  → Transactie 0x000000006905d45d gestart (wacht op stop...)
  ✓ Transactie 0x000000006905d45d opgeslagen (47.830 kWh)

=== Import voltooid ===
✓ Totaal regels verwerkt: 354
✓ Transacties gestart: 3
✓ Transacties gestopt: 3
✓ Transacties opgeslagen: 3

=== Database Statistieken ===
Totaal transacties in database: 686
Totaal verbruik: 15234.567 kWh

Laatste transactie:
  ID: 0x000000006905d45d
  Periode: 2025-10-31 16:40:37 - 2025-11-01 07:14:15
  Verbruik: 47.830 kWh

✓ Database verbinding gesloten

Functies

  • Duplicaat detectie: Controleert of transactie_id al bestaat
  • Complete transacties: Slaat alleen op als zowel start als stop bekend zijn
  • Automatische berekening: total_kWh wordt automatisch berekend
  • Error handling: Duidelijke foutmeldingen bij problemen
  • Statistieken: Toont overzicht na import

⚠️ Belangrijke Punten

  1. Meter values worden genegeerd: De mv: regels uit je CSV worden niet opgeslagen in de transactions tabel. Als je deze ook wil bewaren, laat het me weten en ik maak een aparte tabel voor meterwaarden.

  2. Actieve transacties: Als een transactie alleen een txstart2 heeft maar nog geen txstop2, wordt deze NIET opgeslagen (staat als "pending").

  3. Duplicaten: Als een transaction_id al bestaat in de database, wordt deze overgeslagen.

🔍 Handige Queries

Na import kun je bijvoorbeeld:

-- Laatste 10 transacties
SELECT transaction_id, start_timestamp, stop_timestamp, total_kWh, card
FROM transactions
ORDER BY stop_timestamp DESC
LIMIT 10;

-- Totaal verbruik per kaart
SELECT card, 
       COUNT(*) as aantal_sessies,
       SUM(total_kWh) as totaal_kWh,
       AVG(total_kWh) as gemiddeld_kWh
FROM transactions
GROUP BY card
ORDER BY totaal_kWh DESC;

-- Verbruik per dag
SELECT DATE(start_timestamp) as datum,
       COUNT(*) as aantal_sessies,
       SUM(total_kWh) as totaal_kWh
FROM transactions
GROUP BY DATE(start_timestamp)
ORDER BY datum DESC;

-- Sessies langer dan 8 uur
SELECT transaction_id,
       start_timestamp,
       stop_timestamp,
       total_kWh,
       TIMESTAMPDIFF(HOUR, start_timestamp, stop_timestamp) as uren
FROM transactions
WHERE TIMESTAMPDIFF(HOUR, start_timestamp, stop_timestamp) > 8
ORDER BY uren DESC;

💡 Meterwaarden Ook Opslaan?

Als je de tussentijdse meterwaarden (mv: regels) ook wil bewaren voor gedetailleerde analyse, kan ik een aanvullend script maken met een extra meter_readings tabel. Laat maar weten!

Description
importeer alfen transacties vanuit CSV naar database
Readme 635 KiB
Languages
Python 100%