#!/bin/bash # Clean import of production data using only INSERT statements # This avoids schema conflicts echo "==========================================" echo "Production Data Import (Clean)" echo "Date: 2025-11-13" echo "==========================================" echo "" MYSQL_CMD="docker exec -i dev-mysql mysql -u root -prootpassword shopdb" echo "Step 1: Creating backup tables..." $MYSQL_CMD <<'EOF' DROP TABLE IF EXISTS `notifications_backup_20251113`; CREATE TABLE `notifications_backup_20251113` LIKE `notifications`; INSERT INTO `notifications_backup_20251113` SELECT * FROM `notifications`; DROP TABLE IF EXISTS `notificationtypes_backup_20251113`; CREATE TABLE `notificationtypes_backup_20251113` LIKE `notificationtypes`; INSERT INTO `notificationtypes_backup_20251113` SELECT * FROM `notificationtypes`; DROP TABLE IF EXISTS `printers_backup_20251113`; CREATE TABLE `printers_backup_20251113` LIKE `printers`; INSERT INTO `printers_backup_20251113` SELECT * FROM `printers`; DROP TABLE IF EXISTS `knowledgebase_backup_20251113`; CREATE TABLE `knowledgebase_backup_20251113` LIKE `knowledgebase`; INSERT INTO `knowledgebase_backup_20251113` SELECT * FROM `knowledgebase`; SELECT 'Backup tables created' AS status; EOF echo "" echo "Step 2: Showing current counts..." $MYSQL_CMD <<'EOF' SELECT '=== BEFORE IMPORT ===' AS ''; SELECT (SELECT COUNT(*) FROM notifications) AS notifications_before, (SELECT COUNT(*) FROM notificationtypes) AS notificationtypes_before, (SELECT COUNT(*) FROM printers) AS printers_before, (SELECT COUNT(*) FROM knowledgebase) AS knowledgebase_before; EOF echo "" echo "Step 3: Clearing existing data and importing notification types..." $MYSQL_CMD <<'EOF' SET FOREIGN_KEY_CHECKS = 0; DELETE FROM notifications; DELETE FROM notificationtypes; SET FOREIGN_KEY_CHECKS = 1; EOF cat /home/camp/projects/windows/shopdb/sql/prod_notificationtypes_inserts.sql | $MYSQL_CMD 2>&1 | grep -E "status|ERROR" || echo " ✓ Notification types imported" echo "" echo "Step 4: Importing notifications..." cat /home/camp/projects/windows/shopdb/sql/prod_notifications_inserts.sql | $MYSQL_CMD 2>&1 | grep -E "status|ERROR" || echo " ✓ Notifications imported" echo "" echo "Step 5: Importing printers..." $MYSQL_CMD <<'EOF' DELETE FROM printers; EOF cat /home/camp/projects/windows/shopdb/sql/prod_printers_inserts.sql | $MYSQL_CMD 2>&1 | grep -E "status|ERROR" || echo " ✓ Printers imported" echo "" echo "Step 6: Importing knowledgebase..." $MYSQL_CMD <<'EOF' DELETE FROM knowledgebase; EOF cat /home/camp/projects/windows/shopdb/sql/prod_knowledgebase_inserts.sql | $MYSQL_CMD 2>&1 | grep -E "status|ERROR" || echo " ✓ Knowledgebase imported" echo "" echo "Step 7: Verifying imported data..." $MYSQL_CMD <<'EOF' SELECT '=== AFTER IMPORT ===' AS ''; SELECT (SELECT COUNT(*) FROM notifications) AS notifications_after, (SELECT COUNT(*) FROM notificationtypes) AS notificationtypes_after, (SELECT COUNT(*) FROM printers) AS printers_after, (SELECT COUNT(*) FROM knowledgebase) AS knowledgebase_after; EOF echo "" echo "Step 8: Data Comparison..." $MYSQL_CMD <<'EOF' SELECT '=== Import Summary ===' AS ''; SELECT 'Notifications' AS table_name, (SELECT COUNT(*) FROM notifications_backup_20251113) AS before_count, (SELECT COUNT(*) FROM notifications) AS after_count, (SELECT COUNT(*) FROM notifications) - (SELECT COUNT(*) FROM notifications_backup_20251113) AS difference; SELECT 'Notification Types' AS table_name, (SELECT COUNT(*) FROM notificationtypes_backup_20251113) AS before_count, (SELECT COUNT(*) FROM notificationtypes) AS after_count, (SELECT COUNT(*) FROM notificationtypes) - (SELECT COUNT(*) FROM notificationtypes_backup_20251113) AS difference; SELECT 'Printers' AS table_name, (SELECT COUNT(*) FROM printers_backup_20251113) AS before_count, (SELECT COUNT(*) FROM printers) AS after_count, (SELECT COUNT(*) FROM printers) - (SELECT COUNT(*) FROM printers_backup_20251113) AS difference; SELECT 'Knowledgebase' AS table_name, (SELECT COUNT(*) FROM knowledgebase_backup_20251113) AS before_count, (SELECT COUNT(*) FROM knowledgebase) AS after_count, (SELECT COUNT(*) FROM knowledgebase) - (SELECT COUNT(*) FROM knowledgebase_backup_20251113) AS difference; EOF echo "" echo "Step 9: Sample data verification..." $MYSQL_CMD <<'EOF' SELECT '=== Notification Types ===' AS ''; SELECT notificationtypeid, typename, typedescription, typecolor FROM notificationtypes ORDER BY notificationtypeid; SELECT '=== Recent Active Notifications (Top 5) ===' AS ''; SELECT notificationid, notificationtypeid, notification, DATE_FORMAT(starttime, '%Y-%m-%d %H:%i') AS start, isactive FROM notifications WHERE isactive = 1 ORDER BY starttime DESC LIMIT 5; SELECT '=== Active Printers (Top 10) ===' AS ''; SELECT printerid, printerwindowsname, ipaddress, isactive FROM printers WHERE isactive = 1 LIMIT 10; SELECT '=== Top Knowledge Base Articles ===' AS ''; SELECT linkid, LEFT(shortdescription, 70) AS description, clicks FROM knowledgebase WHERE isactive = 1 ORDER BY clicks DESC LIMIT 10; EOF echo "" echo "==========================================" echo "✓ IMPORT COMPLETE!" echo "==========================================" echo "" echo "Backup tables saved with _backup_20251113 suffix" echo "" echo "To rollback, run:" echo " bash /home/camp/projects/windows/shopdb/sql/rollback_prod_import.sh" echo ""