Ce projet est une application Node.js qui convertit les fichiers CSV en tables de base de données. Il offre un moyen simple de :
- Importer des fichiers CSV
- Stocker les données CSV en JSON sur le serveur (data/db.json)
- Générer des scripts SQL à partir des données JSON (data/sql/db.sql)
- Fournir un lien de téléchargement direct pour le fichier SQL généré
- Gérer la détection automatique des types de données et le nettoyage des colonnes
Parfait pour les développeurs qui ont besoin de migrer des données depuis des feuilles de calcul vers des bases de données !
- Node.js
- Express.js
- Multer (upload de fichiers)
- CSV-Parse (analyse CSV)
- fs-extra (système de fichiers avancé)
- Node.js (v14 ou supérieur)
- npm ou yarn
npm installnpm run devL'API sera disponible sur http://localhost:3000
Une documentation interactive complète est disponible via Swagger UI :
http://localhost:3000/api-docs/
Fonctionnalités de la documentation :
- 📖 Documentation détaillée de tous les endpoints
- 🧪 Interface de test intégrée (Try it out)
- 📋 Exemples de requêtes et réponses
- 🏷️ Organisation par catégories (Tables, Logs)
- 📊 Schémas de données réutilisables
Pour plus de détails, consultez le Guide Swagger complet.
curl http://localhost:3000/api/v1/cat > produits_test.csv << 'EOF'
produit,prix,categorie
Ordinateur Portable,999,Electronique
Smartphone,599,Electronique
Tablette,349,Electronique
EOFcurl -X POST http://localhost:3000/api/v1/tables/upload \
-F "file=@produits_test.csv" \
-F "tableName=produits"curl http://localhost:3000/api/v1/tables/produitscurl http://localhost:3000/api/v1/tables/produits/exportcurl -O -J http://localhost:3000/api/v1/tables/download/produits.sqlCréez un fichier test.html :
<!DOCTYPE html>
<html>
<head>
<title>Test Upload CSV</title>
</head>
<body>
<h2>Test de l'API CSV vers DB</h2>
<h3>1. Upload CSV</h3>
<form
action="http://localhost:3000/api/v1/tables/upload"
method="post"
enctype="multipart/form-data"
>
<input type="file" name="file" accept=".csv" required />
<input
type="text"
name="tableName"
placeholder="Nom de la table"
value="table_test"
/>
<button type="submit">Uploader</button>
</form>
<h3>2. Voir les données</h3>
<p>
Table : <input type="text" id="tableName" value="table_test" />
<button onclick="getData()">Récupérer données</button>
</p>
<h3>3. Résultats</h3>
<div id="results"></div>
<script>
async function getData() {
const tableName = document.getElementById("tableName").value;
const response = await fetch(
`http://localhost:3000/api/v1/tables/${tableName}`
);
const data = await response.json();
document.getElementById("results").innerHTML =
"<pre>" + JSON.stringify(data, null, 2) + "</pre>";
}
</script>
</body>
</html>Puis ouvrez test.html dans votre navigateur.
http://localhost:3000/api/v1
GET /Description : Documentation de l'API Réponse :
{
"success": true,
"message": "Welcome to CSV to DB API",
"data": [...]
}POST /tables/upload
Content-Type: multipart/form-data
FormData:
- file: [fichier CSV]
- tableName: "ma_table" (optionnel)Réponse :
{
"success": true,
"tableName": "ma_table",
"rows": 150
}GET /tables/:tableNameRéponse :
{
"success": true,
"data": [
{
"colonne1": "valeur1",
"colonne2": "valeur2"
}
]
}GET /tables/:tableName/exportRéponse :
{
"success": true,
"downloadUrl": "http://localhost:3000/api/v1/tables/download/ma_table.sql"
}Ce projet participe à Hacktoberfest 2025 ! Vous pouvez contribuer de plusieurs façons :
good first issue- Parfait pour commencerhelp wanted- Besoin d'aideenhancement- Améliorations
-
🐛 Corrections de bugs
- Correction de bugs existants
- Amélioration des messages d'erreur
- Gestion des cas limites
-
✨ Nouvelles fonctionnalités
- Support de nouveaux formats de fichiers
- Amélioration de l'interface utilisateur
- Nouveaux endpoints API
-
📚 Documentation
- Amélioration du README
- Ajout d'exemples d'utilisation
- Documentation des fonctions
-
🧪 Tests
- Tests unitaires
- Tests d'intégration
- Tests end-to-end
-
🎨 Améliorations UX/UI
- Interface web pour l'API
- Amélioration des messages de réponse
- Validation côté client
Cette application crée automatiquement les dossiers nécessaires au démarrage :
uploads/- Fichiers CSV importés temporairementdata/- Données JSON des tables crééesdata/sql/- Fichiers SQL généréslogs/- Fichiers de logs quotidiens
- 🔄 Auto-création : Les dossiers se créent au premier démarrage
- 🛡️ Sécurité : Pas de données sensibles sur Git
- 🧹 Maintenance facile : Scripts de nettoyage intégrés
- 📊 Monitoring : Logs organisés par date
# Lancer tous les tests
npm test
# Tests en mode watch
npm run test:watch
# Coverage des tests
npm run test:coverage- Interface web pour l'API
- Support des fichiers Excel (.xlsx)
- Validation plus poussée des CSV
- Export vers d'autres formats (JSON, XML)
- Tests end-to-end automatisés
- Documentation API avec Swagger/OpenAPI
- Support multilingue
- Configuration via variables d'environnement
Distribué sous licence MIT. Voir LICENSE pour plus d'informations.
- devOnlyPurple - Travail initial
- Hacktoberfest pour encourager les contributions open source
- La communauté Node.js pour les excellents packages
- Tous les contributeurs qui améliorent ce projet
⭐ Si ce projet vous plaît, n'oubliez pas de lui donner une étoile !