Outil de migration simple pour transformer vos exports CSV Fibery en SQL PostgreSQL/Supabase avec préservation automatique des relations, types de données et structures.
🎯 Cas d'usage parfait : Vous avez déjà exporté vos bases de données Fibery en CSV et voulez les importer dans Supabase !
- Analyse automatique des structures de données Fibery
- Détection des types PostgreSQL (UUID, INTEGER, BOOLEAN, etc.)
- Préservation des IDs Fibery comme clés primaires
- Batch processing pour les gros volumes de données
- Détection automatique des relations many-to-many
- Création des tables de jonction avec contraintes
- Index automatiques pour les performances
- Validation des références avant insertion
- Configuration simple via variables en haut des fichiers
- Messages explicatifs pendant l'exécution
- Fichiers SQL prêts à l'emploi pour Supabase
- Mode DRY-RUN pour tester sans risque
- Gestion des erreurs avec retry automatique
- Validation des données avant insertion
- Échappement SQL automatique
- Support UTF-8 complet
- ✅ Exports CSV Fibery (déjà téléchargés depuis Fibery)
- ✅ Projet Supabase créé (pour copier-coller le SQL)
- ✅ Node.js 16+ installé sur votre machine
Important/ # Dossier de votre export Fibery
├── Actionalisation-Dopa/
│ └── Actionalisation-Dopa.csv # Un CSV par base de données
├── PSM-Centres d'intérêt/
│ └── PSM-Centres d'intérêt.csv
└── Bibliotheque-Auteurs/
└── Bibliotheque-Auteurs.csv
- SQL Editor dans votre projet Supabase (pour copier-coller)
- Service Role Key uniquement si vous voulez automatiser plus tard
# 1. Cloner le projet
git clone https://github.com/gryynn/migration_fibery.git
cd migration_fibery
# 2. Installer les dépendances
npm install
# 3. Configurer les chemins (dans le code)
# Éditer csv-to-sql-migrator.js et create-relations.js
# Modifier la ligne : importantDir avec votre chemin vers le dossier ImportantModifiez le chemin dans les scripts :
// Dans csv-to-sql-migrator.js et create-relations.js
const CONFIG = {
importantDir: 'C:\\Users\\martin\\Downloads\\mon-export\\Important', // ← Votre chemin
schema: 'psm_root', // Nom du schéma PostgreSQL
batchSize: 100 // Lignes par INSERT (ajustez selon vos données)
};# 1. Générer le SQL des tables
node csv-to-sql-migrator.js
# 2. Générer le SQL des relations
node create-relations.js- Ouvrez Supabase SQL Editor dans votre projet
- Copiez-collez le contenu de
migration-complete.sql - Cliquez "Run" pour créer les tables
- Copiez-collez le contenu de
relations-complete.sql - Cliquez "Run" pour créer les relations
🎉 Vos données Fibery sont maintenant dans Supabase !
| Variable | Description | Exemple |
|---|---|---|
importantDir |
Chemin vers le dossier Important | C:\Users\...\Important |
schema |
Nom du schéma PostgreSQL | psm_root |
batchSize |
Lignes par INSERT | 100 (sûr) à 1000 (rapide) |
Modifiez seulement ces lignes dans les deux scripts :
// csv-to-sql-migrator.js et create-relations.js
const CONFIG = {
importantDir: 'C:\\Users\\martin\\Downloads\\mon-export\\Important', // ← CHANGEZ CE CHEMIN
schema: 'psm_root', // ← CHANGEZ si vous voulez un autre nom de schéma
batchSize: 100 // ← AJUSTEZ selon la taille de vos données
};💡 Pas de fichier .env, pas de clés API, juste modifier le chemin !
node csv-to-sql-migrator.jsCe script :
- 🔍 Analyse tous les CSV dans le dossier Important
- 🔮 Détecte les types PostgreSQL automatiquement
- 📝 Génère
migration-complete.sqlavec :CREATE TABLEpour chaque baseINSERTpar batches- Commentaires explicatifs
node create-relations.jsCe script :
- 🔍 Détecte les colonnes de relations (avec virgules)
- 🎯 Devine les tables cibles automatiquement
- 🔗 Génère
relations-complete.sqlavec :- Tables de jonction many-to-many
- Clés étrangères avec contraintes
- Index pour les performances
- Supabase SQL Editor → Nouveau query
- Copier-coller
migration-complete.sql - Run → Tables créées
- Copier-coller
relations-complete.sql - Run → Relations créées
migration-complete.sql # Tables et données principales
relations-complete.sql # Relations many-to-many
psm_root/
├── actionalisation_dopa/ # Table principale
│ ├── id (UUID, Primary Key)
│ ├── name (TEXT)
│ ├── psm_centres_dinterets (TEXT)
│ └── ...
├── psm_centres_dinteret/ # Table liée
│ └── id (UUID, Primary Key)
└── actionalisation_dopa_psm_centres_dinteret/ # Table de jonction
├── actionalisation_dopa_id (UUID, FK)
├── psm_centres_dinteret_id (UUID, FK)
└── PRIMARY KEY (dopa_id, centres_id)
| Type Fibery | Type PostgreSQL | Exemple |
|---|---|---|
| ID | UUID |
d47ec620-2190-11ef-910c-f1df4955273f |
| Nombre | INTEGER |
123, -456 |
| Décimal | NUMERIC(12,2) |
123.45 |
| Booléen | BOOLEAN |
true, false, 1, 0 |
| Date | DATE |
2024-06-03 |
| Date/Heure | TIMESTAMPTZ |
2024-06-03T10:05:39.625Z |
| Texte | TEXT |
Tout le reste |
| Format | Exemple | Résultat |
|---|---|---|
| Liste | "A,B,C" |
3 relations créées |
| Nom Fibery | "PSM-Insights" |
Lien vers table psm_insights |
| Référence | "user_id" |
Lien vers table user |
- Analyse : Le script scanne toutes les colonnes
- Détection : Cherche les virgules et patterns de noms
- Association : Devine les tables cibles
- Création : Génère les tables de jonction
Données Fibery :
Table: Actionalisation-Dopa
- id: abc-123
- name: "Duo Lingo"
- PSM-Centres d'intérêt: "Développement personnel,Communication"
Table: PSM-Centres d'intérêt
- id: def-456
- name: "Développement personnel"
- id: ghi-789
- name: "Communication"
Résultat PostgreSQL :
-- Table de jonction créée automatiquement
CREATE TABLE psm_root.actionalisation_dopa_psm_centres_dinteret (
actionalisation_dopa_id UUID REFERENCES psm_root.actionalisation_dopa(id),
psm_centres_dinteret_id UUID REFERENCES psm_root.psm_centres_dinteret(id),
PRIMARY KEY (actionalisation_dopa_id, psm_centres_dinteret_id)
);
-- Données insérées
INSERT INTO psm_root.actionalisation_dopa_psm_centres_dinteret
VALUES ('abc-123', 'def-456'), ('abc-123', 'ghi-789');# Vérifiez le chemin
console.log(CONFIG.importantDir);
// Doit pointer vers le dossier Important de votre export- Vérifiez que vos colonnes contiennent des virgules
- Les noms de colonnes correspondent-ils aux noms de tables ?
- Supabase attend des UUID valides
- Vérifiez que vos IDs Fibery sont au bon format
- Exécutez d'abord
migration-complete.sql - Puis
relations-complete.sql
# Mode verbeux
console.log(`Traitement: ${dbName}`);
console.log(`Colonnes: ${headers.length}`);
console.log(`Lignes: ${rows.length}`);-- Compter les tables
SELECT COUNT(*) FROM information_schema.tables
WHERE table_schema = 'psm_root';
-- Vérifier les relations
SELECT
schemaname,
tablename,
n_live_tup as row_count
FROM pg_stat_user_tables
WHERE schemaname = 'psm_root'
ORDER BY n_live_tup DESC;📁 migration-fibery-supabase/
├── 📄 csv-to-sql-migrator.js # Migration des tables
├── 📄 create-relations.js # Détection des relations
├── 📄 migration-complete.sql # SQL généré (tables)
├── 📄 relations-complete.sql # SQL généré (relations)
├── 📄 README.md # Ce guide
└── 📄 package.json # Dépendances
Fibery CSV → Analyse → Types PostgreSQL → Tables SQL → Supabase
↓
Relations CSV → Détection → Tables jonction → Relations SQL → Supabase
| Volume | Temps approx. | Configuration |
|---|---|---|
| 10 tables, 1K lignes | ~30 secondes | batchSize: 100 |
| 50 tables, 10K lignes | ~3 minutes | batchSize: 500 |
| 100 tables, 50K lignes | ~15 minutes | batchSize: 1000 |
// Migration rapide (peut échouer avec gros volumes)
batchSize: 1000,
retryDelay: 500
// Migration sûre (recommandé)
batchSize: 100,
retryDelay: 2000- ✅ Backup de vos CSV avant de commencer
- ✅ Projet Supabase de test pour valider d'abord
- ✅ Petits tests avant la migration complète
- ✅ Vérification des résultats dans Supabase après import
- 📖 README.md - Guide complet
- 💬 Code commenté - Explications dans le code
- 🔍 Logs détaillés - Messages pendant l'exécution
- Logs : Vérifiez la console pour les messages d'erreur
- Fichiers : Examinez le SQL généré
- Tests : Utilisez de petits échantillons d'abord
Ce projet est en amélioration continue. N'hésitez pas à :
- 📝 Signaler des bugs
- 💡 Proposer des améliorations
- 🔄 Contribuer au code
Après migration, vous devriez avoir :
- ✅ Toutes vos tables Fibery en PostgreSQL
- ✅ Relations many-to-many préservées
- ✅ Types de données optimisés
- ✅ Index pour les performances
- ✅ Données prêtes pour vos applications
Prochaines étapes :
- Connectez vos applications à Supabase
- Remplacez les queries Fibery par du SQL
- Optimisez les queries avec les index créés
- Archivez votre workspace Fibery
✨ Migration réussie ! Vos données Fibery sont maintenant dans PostgreSQL !