Opération technique, à lancer depuis le projet avec l'accès à la base. Faites une
sauvegarde de la base avant l'étape d'application.
Ce dont vous avez besoin
- L'export global des utilisateurs Teachable (un CSV avec tous les comptes)
- Un export par formation (le CSV des inscrits de chaque cours)
- Le slug local de chaque formation déjà créée sur la plateforme
1. Préparer les fichiers
Le script de préparation ne touche pas à la base : il ne fait que transformer les exports bruts en fichiers propres.pnpm db:prepare-teachable --users export-all.csv \
--course export-react.csv=formation-react \
--course export-node.csv=formation-nodedocs/import/prepared :
| Fichier | Contenu |
|---|---|
users.csv | Email et nom complet des comptes à créer |
enrollments.csv | Qui a accès à quelle formation |
mapping.json | La correspondance cours Teachable → slug local |
--out <dossier>— écrire ailleurs que dans le dossier par défaut--skip-empty— exclure les comptes sans aucune formation
Le
= sépare le fichier du slug : --course fichier.csv=slug-local. Le slug doit
correspondre exactement à celui de la formation créée sur la plateforme.2. Importer à blanc
Sans l'option--apply, le script est en dry run : il calcule tout et n'écrit
rien.
pnpm db:import-teachable \
--users docs/import/prepared/users.csv \
--enrollments docs/import/prepared/enrollments.csv \
--mapping docs/import/prepared/mapping.jsonLisez le rapport avant d'aller plus loin : c'est exactement ce qui sera écrit. Un
écart ici vaut mieux qu'un écart en base.
3. Appliquer
Une fois le rapport conforme, relancez la même commande avec--apply :
pnpm db:import-teachable \
--users docs/import/prepared/users.csv \
--enrollments docs/import/prepared/enrollments.csv \
--mapping docs/import/prepared/mapping.json \
--apply--apply écrit réellement en base. C'est la seule étape non réversible de la
procédure.4. Vérifier
Le script de vérification est en lecture seule. Il compare le nombre de formations annoncé par l'export Teachable aux accès réellement présents en base :pnpm db:verify-teachable --users export-all.csv--details <n> règle le nombre d'écarts détaillés affichés.
Après l'import
Les étudiants importés ont un compte mais pas encore de mot de passe : ils passent par la réinitialisation depuis/reset-password pour entrer la première fois. Leurs
accès, eux, sont déjà ouverts.
Les inscriptions importées n'apparaissent pas dans
Paiements : ce sont des reprises d'historique, pas des
ventes encaissées sur cette plateforme.