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
txstart2regels (begin van laadsessie) - Leest
txstop2regels (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_kWhwordt automatisch berekend - Error handling: Duidelijke foutmeldingen bij problemen
- Statistieken: Toont overzicht na import
⚠️ Belangrijke Punten
-
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. -
Actieve transacties: Als een transactie alleen een
txstart2heeft maar nog geentxstop2, wordt deze NIET opgeslagen (staat als "pending"). -
Duplicaten: Als een
transaction_idal 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!