2.3 KiB
2.3 KiB
Migration SQLite → PostgreSQL
Script pour migrer les données de SQLite vers PostgreSQL.
Prérequis
- Le container
got-appdoit être démarré - Le container
got-postgresdoit être démarré et accessible - Le fichier SQLite doit être accessible dans le container (par défaut:
/app/data/dev.db)
Utilisation
Dans le container Docker
# IMPORTANT: Le script doit être exécuté depuis la racine du projet (/app)
# Option 1: Exécuter directement depuis l'extérieur du container
docker-compose exec got-app sh -c "cd /app && pnpm dlx tsx scripts/migrate-sqlite-to-postgres.ts"
# Option 2: Se connecter au container puis exécuter
docker-compose exec got-app sh
# Dans le container:
cd /app
pnpm dlx tsx scripts/migrate-sqlite-to-postgres.ts
Variables d'environnement
Le script utilise les variables d'environnement suivantes :
SQLITE_DB_PATH: Chemin vers le fichier SQLite (défaut:/app/data/dev.db)DATABASE_URL: URL de connexion PostgreSQL (défaut: depuis les variables d'env du container)
Exemple avec variables personnalisées
docker-compose exec -e SQLITE_DB_PATH=/app/data/old.db got-app sh -c "cd /app && pnpm dlx tsx scripts/migrate-sqlite-to-postgres.ts"
Ce que fait le script
- Se connecte à SQLite (lecture seule) et PostgreSQL
- Migre les données dans l'ordre des dépendances :
- Users
- UserPreferences
- Events
- EventRegistrations
- EventFeedbacks
- SitePreferences
- Challenges
- Utilise
upsertpour éviter les doublons (idempotent) - Affiche la progression en temps réel
- Affiche un résumé à la fin avec les statistiques
Notes importantes
- Le script est idempotent : tu peux le relancer plusieurs fois sans problème
- Les données existantes dans PostgreSQL seront mises à jour si elles existent déjà
- Les erreurs sont affichées mais n'arrêtent pas la migration
- Le script utilise
better-sqlite3en lecture seule pour SQLite
En cas d'erreur
Si le script échoue :
- Vérifie que les containers sont démarrés :
docker-compose ps - Vérifie que le fichier SQLite existe :
docker-compose exec got-app ls -la /app/data/dev.db - Vérifie les logs PostgreSQL :
docker-compose logs got-postgres - Vérifie la connexion PostgreSQL :
docker-compose exec got-app pnpm prisma db pull