Επεξεργασία
Αντιγραφή
Διαγραφή
DELETE FROM proc WHERE `proc`.`db` = 'tpms_db' AND `proc`.`name` = 'InsertDummyTruckEntries' AND `proc`.`type` = 'PROCEDURE'
tpms_db
InsertDummyTruckEntries
PROCEDURE
InsertDummyTruckEntries
SQL
CONTAINS_SQL
NO
DEFINER
BEGIN
DECLARE i INT DEFAULT 0;
-- Ορίζουμε τον αριθμό των εγγραφών στις 100000
DECLARE total_records INT DEFAULT 100000;
DECLARE start_date DATETIME;
DECLARE entry_time_val DATETIME;
DECLARE exit_time_val DATETIME;
-- Μεταβλητές Δεδομένων
DECLARE plate_prefix CHAR(3);
DECLARE plate_number INT;
DECLARE driver_name_val VARCHAR(100);
DECLARE space_id_val INT;
-- ΟΡΙΣΜΟΣ ΧΩΡΙΣ ΔΩΜΑΤΙΑ
DECLARE room_id_val INT DEFAULT 0;
DECLARE stay_overnight_days_val INT DEFAULT 0;
DECLARE service_plan_val VARCHAR(5);
DECLARE has_shower_val INT;
DECLARE has_wash_val INT;
-- ΟΡΙΣΜΟΣ ΠΛΗΡΩΜΕΝΩΝ ΕΓΓΡΑΦΩΝ
DECLARE is_paid_val INT DEFAULT 1;
-- Μεταβλητές Κόστους (Βάσει των τιμών που χρησιμοποιεί ο κώδικάς σας)
DECLARE rate_12hr_park DECIMAL(10, 2) DEFAULT 10.00;
DECLARE rate_24hr_park DECIMAL(10, 2) DEFAULT 20.00;
DECLARE rate_shower DECIMAL(10, 2) DEFAULT 5.00;
DECLARE rate_wash DECIMAL(10, 2) DEFAULT 40.00;
-- Ορίζουμε την αρχική ημερομηνία (π.χ., 1 χρόνο πίσω)
SET start_date = DATE_SUB(NOW(), INTERVAL 1 YEAR);
-- Βρόχος για 100000 εγγραφές
WHILE i < total_records DO
-- 1. Τυχαία Πινακίδα, Όνομα
SET plate_prefix = CONCAT(CHAR(65 + (RAND() * 25)), CHAR(65 + (RAND() * 25)), CHAR(65 + (RAND() * 25)));
SET plate_number = FLOOR(1000 + (RAND() * 8999));
SET @license_plate_val = CONCAT(plate_prefix, plate_number);
SET @names = 'NIKOS,GEORGIOS,ANNA,MARIA,DIMITRIS,ELENI,IOANNIS,SOFIA';
SET @surnames = 'PAPPAS,KARAS,DIMITRIOU,GEORGIOU,VASILIOU,PETRIDIS,IOANNIDIS';
SET @random_name = SUBSTRING_INDEX(SUBSTRING_INDEX(@names, ',', 1 + FLOOR(RAND() * (LENGTH(@names) - LENGTH(REPLACE(@names, ',', '')) + 1))), ',', -1);
SET @random_surname = SUBSTRING_INDEX(SUBSTRING_INDEX(@surnames, ',', 1 + FLOOR(RAND() * (LENGTH(@surnames) - LENGTH(REPLACE(@surnames, ',', '')) + 1))), ',', -1);
SET driver_name_val = CONCAT(@random_surname, ' ', @random_name);
-- 2. ΛΟΓΙΚΗ ΓΙΑ SPACE_ID: Επιλέγει ένα τυχαίο ID που υπάρχει στον πίνακα parking_spaces (ΔΙΟΡΘΩΣΗ FOREIGN KEY)
-- ΣΗΜΑΝΤΙΚΗ ΣΗΜΕΙΩΣΗ: Η RAND() σε ΟUTPUT/LIMIT είναι αργή για 100.000 επαναλήψεις.
-- Για δοκιμαστικούς σκοπούς, θα χρησιμοποιήσουμε μια πιο γρήγορη μέθοδο τυχαίας επιλογής
-- εφόσον ο πίνακας parking_spaces έχει συνεχόμενα IDs (1, 2, 3, ... Max_ID)
-- Αρχικά, βρίσκουμε το μέγιστο space_id (εκτελείται μία φορά, εκτός βρόχου)
-- Επειδή αυτό δεν είναι εφικτό μέσα σε ένα απλό script, επιστρέφουμε στην ασφαλή μέθοδο
-- απλοποιώντας την επιλογή:
-- Εάν ο πίνακας parking_spaces είναι μικρός, η RAND() είναι OK.
SELECT space_id INTO space_id_val
FROM parking_spaces
ORDER BY RAND()
LIMIT 1;
-- 3. Τυχαίο Πακέτο & Υπηρεσίες
SET service_plan_val = IF(RAND() < 0.5, '12hr', '24hr');
SET has_shower_val = IF(RAND() < 0.4, FLOOR(1 + (RAND() * 3)), 0);
SET has_wash_val = IF(RAND() < 0.1, 1, 0);
-- 4. Τυχαίες Ώρες Εισόδου & Εξόδου (Όλες στο παρελθόν)
SET entry_time_val = DATE_ADD(start_date, INTERVAL FLOOR(RAND() * 365 * 24 * 60) MINUTE);
-- Διάρκεια διαμονής από 6 έως 72 ώρες
SET exit_time_val = DATE_ADD(entry_time_val, INTERVAL FLOOR(6 + (RAND() * 72)) HOUR);
-- Εξασφάλιση ότι η έξοδος είναι στο παρελθόν (ώστε να είναι πληρωμένη)
WHILE exit_time_val > NOW() DO
SET entry_time_val = DATE_ADD(start_date, INTERVAL FLOOR(RAND() * 365 * 24 * 60) MINUTE);
SET exit_time_val = DATE_ADD(entry_time_val, INTERVAL FLOOR(6 + (RAND() * 72)) HOUR);
END WHILE;
-- 5. Υπολογισμός Κόστους
SET @parking_base = IF(service_plan_val = '12hr', rate_12hr_park, rate_24hr_park);
SET @shower_cost_val = has_shower_val * rate_shower;
SET @wash_cost_val = has_wash_val * rate_wash;
SET @overnight_cost_val = 0.00; -- Σταθερά 0.00 (χωρίς δωμάτια)
SET @services_cost_val = @shower_cost_val + @wash_cost_val;
-- Το συνολικό κόστος είναι η βάση + οι υπηρεσίες
SET @total_cost_val = @parking_base + @services_cost_val;
-- 6. Εισαγωγή Δεδομένων
INSERT INTO `truck_entries`
(`license_plate`, `driver_name`, `space_id`, `entry_time`, `exit_time`,
`service_plan`, `has_shower`, `has_wash`, `has_wash2`, `stay_overnight_days`,
`hourly_surcharge_hours`, `parking_cost`, `services_cost`, `total_cost`, `is_paid`,
`room_id`, `shower_cost`, `wash_cost`, `overnight_cost`)
VALUES (
@license_plate_val, driver_name_val, space_id_val, entry_time_val, exit_time_val,
service_plan_val, has_shower_val, has_wash_val, 0, stay_overnight_days_val,
0, @parking_base, @services_cost_val, @total_cost_val, is_paid_val,
room_id_val, @shower_cost_val, @wash_cost_val, @overnight_cost_val
);
SET i = i + 1;
END WHILE;
END
root@localhost
2026-06-08 14:22:02
2026-06-08 14:22:02
NO_AUTO_VALUE_ON_ZERO
utf8mb4
utf8mb4_unicode_ci
utf8mb4_general_ci
BEGIN
DECLARE i INT DEFAULT 0;
-- Ορίζουμε τον αριθμό των εγγραφών στις 100000
DECLARE total_records INT DEFAULT 100000;
DECLARE start_date DATETIME;
DECLARE entry_time_val DATETIME;
DECLARE exit_time_val DATETIME;
-- Μεταβλητές Δεδομένων
DECLARE plate_prefix CHAR(3);
DECLARE plate_number INT;
DECLARE driver_name_val VARCHAR(100);
DECLARE space_id_val INT;
-- ΟΡΙΣΜΟΣ ΧΩΡΙΣ ΔΩΜΑΤΙΑ
DECLARE room_id_val INT DEFAULT 0;
DECLARE stay_overnight_days_val INT DEFAULT 0;
DECLARE service_plan_val VARCHAR(5);
DECLARE has_shower_val INT;
DECLARE has_wash_val INT;
-- ΟΡΙΣΜΟΣ ΠΛΗΡΩΜΕΝΩΝ ΕΓΓΡΑΦΩΝ
DECLARE is_paid_val INT DEFAULT 1;
-- Μεταβλητές Κόστους (Βάσει των τιμών που χρησιμοποιεί ο κώδικάς σας)
DECLARE rate_12hr_park DECIMAL(10, 2) DEFAULT 10.00;
DECLARE rate_24hr_park DECIMAL(10, 2) DEFAULT 20.00;
DECLARE rate_shower DECIMAL(10, 2) DEFAULT 5.00;
DECLARE rate_wash DECIMAL(10, 2) DEFAULT 40.00;
-- Ορίζουμε την αρχική ημερομηνία (π.χ., 1 χρόνο πίσω)
SET start_date = DATE_SUB(NOW(), INTERVAL 1 YEAR);
-- Βρόχος για 100000 εγγραφές
WHILE i < total_records DO
-- 1. Τυχαία Πινακίδα, Όνομα
SET plate_prefix = CONCAT(CHAR(65 + (RAND() * 25)), CHAR(65 + (RAND() * 25)), CHAR(65 + (RAND() * 25)));
SET plate_number = FLOOR(1000 + (RAND() * 8999));
SET @license_plate_val = CONCAT(plate_prefix, plate_number);
SET @names = 'NIKOS,GEORGIOS,ANNA,MARIA,DIMITRIS,ELENI,IOANNIS,SOFIA';
SET @surnames = 'PAPPAS,KARAS,DIMITRIOU,GEORGIOU,VASILIOU,PETRIDIS,IOANNIDIS';
SET @random_name = SUBSTRING_INDEX(SUBSTRING_INDEX(@names, ',', 1 + FLOOR(RAND() * (LENGTH(@names) - LENGTH(REPLACE(@names, ',', '')) + 1))), ',', -1);
SET @random_surname = SUBSTRING_INDEX(SUBSTRING_INDEX(@surnames, ',', 1 + FLOOR(RAND() * (LENGTH(@surnames) - LENGTH(REPLACE(@surnames, ',', '')) + 1))), ',', -1);
SET driver_name_val = CONCAT(@random_surname, ' ', @random_name);
-- 2. ΛΟΓΙΚΗ ΓΙΑ SPACE_ID: Επιλέγει ένα τυχαίο ID που υπάρχει στον πίνακα parking_spaces (ΔΙΟΡΘΩΣΗ FOREIGN KEY)
-- ΣΗΜΑΝΤΙΚΗ ΣΗΜΕΙΩΣΗ: Η RAND() σε ΟUTPUT/LIMIT είναι αργή για 100.000 επαναλήψεις.
-- Για δοκιμαστικούς σκοπούς, θα χρησιμοποιήσουμε μια πιο γρήγορη μέθοδο τυχαίας επιλογής
-- εφόσον ο πίνακας parking_spaces έχει συνεχόμενα IDs (1, 2, 3, ... Max_ID)
-- Αρχικά, βρίσκουμε το μέγιστο space_id (εκτελείται μία φορά, εκτός βρόχου)
-- Επειδή αυτό δεν είναι εφικτό μέσα σε ένα απλό script, επιστρέφουμε στην ασφαλή μέθοδο
-- απλοποιώντας την επιλογή:
-- Εάν ο πίνακας parking_spaces είναι μικρός, η RAND() είναι OK.
SELECT space_id INTO space_id_val
FROM parking_spaces
ORDER BY RAND()
LIMIT 1;
-- 3. Τυχαίο Πακέτο & Υπηρεσίες
SET service_plan_val = IF(RAND() < 0.5, '12hr', '24hr');
SET has_shower_val = IF(RAND() < 0.4, FLOOR(1 + (RAND() * 3)), 0);
SET has_wash_val = IF(RAND() < 0.1, 1, 0);
-- 4. Τυχαίες Ώρες Εισόδου & Εξόδου (Όλες στο παρελθόν)
SET entry_time_val = DATE_ADD(start_date, INTERVAL FLOOR(RAND() * 365 * 24 * 60) MINUTE);
-- Διάρκεια διαμονής από 6 έως 72 ώρες
SET exit_time_val = DATE_ADD(entry_time_val, INTERVAL FLOOR(6 + (RAND() * 72)) HOUR);
-- Εξασφάλιση ότι η έξοδος είναι στο παρελθόν (ώστε να είναι πληρωμένη)
WHILE exit_time_val > NOW() DO
SET entry_time_val = DATE_ADD(start_date, INTERVAL FLOOR(RAND() * 365 * 24 * 60) MINUTE);
SET exit_time_val = DATE_ADD(entry_time_val, INTERVAL FLOOR(6 + (RAND() * 72)) HOUR);
END WHILE;
-- 5. Υπολογισμός Κόστους
SET @parking_base = IF(service_plan_val = '12hr', rate_12hr_park, rate_24hr_park);
SET @shower_cost_val = has_shower_val * rate_shower;
SET @wash_cost_val = has_wash_val * rate_wash;
SET @overnight_cost_val = 0.00; -- Σταθερά 0.00 (χωρίς δωμάτια)
SET @services_cost_val = @shower_cost_val + @wash_cost_val;
-- Το συνολικό κόστος είναι η βάση + οι υπηρεσίες
SET @total_cost_val = @parking_base + @services_cost_val;
-- 6. Εισαγωγή Δεδομένων
INSERT INTO `truck_entries`
(`license_plate`, `driver_name`, `space_id`, `entry_time`, `exit_time`,
`service_plan`, `has_shower`, `has_wash`, `has_wash2`, `stay_overnight_days`,
`hourly_surcharge_hours`, `parking_cost`, `services_cost`, `total_cost`, `is_paid`,
`room_id`, `shower_cost`, `wash_cost`, `overnight_cost`)
VALUES (
@license_plate_val, driver_name_val, space_id_val, entry_time_val, exit_time_val,
service_plan_val, has_shower_val, has_wash_val, 0, stay_overnight_days_val,
0, @parking_base, @services_cost_val, @total_cost_val, is_paid_val,
room_id_val, @shower_cost_val, @wash_cost_val, @overnight_cost_val
);
SET i = i + 1;
END WHILE;
END
NONE