Files
2025-11-02 10:41:41 +01:00

135 lines
4.0 KiB
Markdown

# 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:
```python
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)
```bash
pip3 install mysql-connector-python
```
### 3. Voer import uit
```bash
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:
```sql
-- 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!