· 8 min de lecture

Migrer Google Sheets vers SQL : démonstration e-commerce avec 1 686 lignes


Une démonstration complète avec 1 686 enregistrements et 12 erreurs intentionnelles, de Google Sheets vers une base de données relationnelle fiable.

Un détaillant fictif de cafés spécialisés — « Roast & Ritual Coffee Co. » - parcourt tout son opération dans un classeur Google Sheets de 10 onglets : catalogue, variantes, inventaire, commandes, articles de commande, clients, fournisseurs, bons de commande, inventaires, journal d’activité. Le migration complète de ce classeur dans une base de données SQL normalisée, défauts inclus, est public et explorable sur demo.kamensky.dev.

TL;DR

Le problèmeLes opérations de vente au détail dans Google Sheets pourrissent de manière prévisible : clients en double, inventaires à la dérive, prix historiques écrasés, aucune piste d’audit.
Qu’est-ce que la démoUne migration déterministe et 100% reproductible : 10 onglets de feuille de calcul → 12 tableaux propres et liés, avec un rapport rendant compte de chaque décision de nettoyage.
Les chiffres clés1 686 enregistrements sources → 1 634 importés · 16 doublons résolus · 18 valeurs normalisées · 3 lignes mises en quarantaine · 8 corrections de stock · 435 événements d’audit.
Les parties difficilesFusion du même client entré de deux manières (historique de 12 commandes réuni) ; conserver un prix promo de 54 $ alors que le catalogue indique 59 $ ; recalculer le stock à partir des mouvements lorsque la feuille indique 45 mais que le calcul indique 35.
Le modèleAnalyser → Carte → Nettoyer → Valider → Importer, exécuté comme une importation tout ou rien – soit il réussit complètement, soit il revient complètement en arrière.
À retenirUne migration de feuille de calcul n’est pas un travail de copier-coller ; c’est un audit. Si votre rapport de migration ne peut pas prendre en compte chaque ligne, vous n’avez pas migré : vous avez déplacé le désordre.

Vous verrez ce qui se passe réellement lorsqu’une entreprise devient trop grande pour Sheets, comment chaque classe de défauts est détecté et résolu avec des décomptes exacts, et quelle est l’application des opérations qui en résulte on dirait. Si vous êtes plus tôt dans le voyage, commencez par Quand Google Sheets arrête de évoluer; si tu es planifiez une migration de base de données de production, associez-la au étude de cas : AppSheet vers SQL.

Le problème

Le classeur de démonstration est volontairement réaliste, car chaque entreprise utilisant une feuille de calcul converge vers les quatre mêmes modes de défaillance :

  1. Fragmentation du client. Le même client est saisi sous différents orthographes dans les commandes – Marcus Vance dans un onglet, Marcus V. dans un autre. La valeur à vie et l’historique des commandes se divisent en deux identités, et aucune n’est correcte.
  2. Dérive du recomptage des stocks. Un onglet statique « Inventaire » est une photographie, pas un grand livre. Les ventes et les réapprovisionnements atterrissent dans des onglets déconnectés ; quelqu’un oublie de mettre à jour le comte ; la feuille s’écarte de la réalité, une édition manquée à la fois.
  3. Les faits historiques sont écrasés. Lorsqu’un prix catalogue change, un naïf la synchronisation « corrige » les anciennes lignes de commande pour qu’elles correspondent — réécrivant silencieusement votre comptabilité.
  4. Visibilité d’audit nulle. Sheets ne peut pas répondre qui a modifié ce prix, quand le dernier recomptage a-t-il eu lieu et pourquoi.

La migration, étape par étape

Le pipeline comporte cinq étapes et, c’est important, l’importation s’exécute en une seule. étape tout ou rien. Il n’existe aucun état dans lequel la moitié du classeur est migré :

ScèneCe qu’il fait
1. AnalyserInspecte les formes des feuilles, la nullité et détecte les anomalies sales avant de toucher quoi que ce soit.
2. CarteApplique des mappages explicites colonne-entité – rien n’est déduit par les vibrations.
3. PropreExécute les règles de nettoyage avec un suivi exact du décompte : chaque doublon, normalisation et quarantaine est compté.
4. ValiderAffirme des contrats record, l’intégrité des liens et six « faits héroïques » qui doivent survivre textuellement à la migration.
5. ImporterChargement d’une seule transaction ; construit le grand livre des mouvements d’inventaire et le journal d’activité.
MétriqueComte
Enregistrements sources1 686
Importé avec succès1 634
Doublons résolus16 (14 clients, 1 fournisseur, 1 article de commande)
Valeurs normalisées18 (7 SKU, 6 variantes, 5 e-mails)
Mis en quarantaine pour examen3 (ordres ambigus – jamais abandonnés en silence)
Corrections boursières8 (fiche manuelle ≠ registre des mouvements)
Prix ​​historiques préservés1
Événements d’activité importés435

Les 12 défauts rencontrés par chaque migration

Le classeur est livré avec douze défauts implantés (E1 à E12), chacun tiré d’un modèle réel. les migrations. Un échantillon de ce que le pipeline doit capturer :

IDÉtat héritéRègle appliquéeRésultat
E1Marcus Vance (C-023) et Marcus V. (C-071), même courrielFusionner par email normalisé ; conserver le nom légal le plus long ; relier les commandesUn client avec un historique de 12 commandes
E3La ligne ORD-1042 indique 54 $, le catalogue indique 59 $Préserver order_items.unit_price comme fait historiquePrix ​​promo maintenu ; catalogue intact — deux chiffres, tous deux vrais
E4La feuille d’inventaire indique 45 unités du SKU phareRecalculer le stock à partir des mouvements : +120 achetés, −85 vendusLe cheptel est de 35 ; la feuille avait dérivé +10
E9Fournisseur typé comme “Importateurs de café Horzion”Alias/résolution floue vers le fournisseur canoniqueRéapprovisionnement lié à la bonne entité
E12Téléphones vides, cellules réservées videsLes valeurs vides restent vraiment vides, jamais de zéros facticesDonnées honnêtes, pas de faux espaces réservés

Les sept autres couvrent les fautes de frappe du SKU (ETH-yir-wb-1000), les noms de produits retapés où une référence SKU devrait être, e-mails clients manquants, chaos dans le boîtier (WHOLE BEAN / 1KG vs ground / 250g), un élément de campagne double-collé et un SKU abandonné commandé des années plus tard - importé et signalé, car la suppression l’histoire est pire que de la garder.

Le boîtier E4 mérite une mention, car c’est celui qui surprend : le La feuille de calcul n’était pas fausse le jour où elle a été écrite. Cela a dérivé. Trois achats commandes entrées (+120 sacs) et quinze commandes sorties (−85), le stock réel est de 35 — le la feuille 45 est le résidu des mises à jour manuelles manquées. C’est pourquoi la structure cible stocke les mouvements, pas les comptes : le stock est toujours calculé, jamais saisi à la main.

Explorez la démo en direct

Tout ce qui précède est consultable sur demo.kamensky.dev — une application d’opérations complète s’exécutant sur la base de données migrée (non en lecture seule) :

  • Tableau de bord et analyses — KPI calculés à partir de tableaux propres et liés, et non collés à partir d’une feuille.
  • Saisie de données et autorisations — rôles d’utilisateurs authentifiés avec limites d’autorisations granulaires et saisie de données en direct.
  • Inventory Ledger — stock calculé à partir du grand livre des mouvements, avec le mathématiques achetées/vendues/calculées visibles par SKU.
  • Client 360 — Marcus Vance ouvert : 12 commandes sur les deux anciennes identités, fusionné en une seule chronologie.
  • Commandes, produits, fournisseurs, achats — répertoires complets avec pages de détails par commande, SKU et fournisseur.
  • Notifications et intégrations — alertes opérationnelles automatisées et prêtes pour les intégrations externes.
  • Rapport de migration — le tableau d’audit exact ci-dessus, rendu à partir de l’exécution.

Les données sont fictives (c’est une démo), mais déterministes : chaque régénération commence à partir des mêmes données sources fixes — les mêmes 12 défauts, les mêmes 1 686 enregistrements, à chaque fois. C’est ce qui rend la migration prouvable plutôt que « probablement bien ».

Votre classeur est-il en danger ?

Les défauts de démonstration sont implantés ; le vôtre s’est accumulé organiquement. Cette calculatrice marque à quel point votre classeur est proche des modes de défaillance ci-dessus – branchez vos propres numéros :

GARDERXYZ10XYZGARDER

Vous gérez votre boutique sans feuille de calcul ?La démo utilise SQLite (une base de données intégrée) pour rester autonome — le même modèle de pipeline est la façon dont je

migrez les activités de production vers des bases de données relationnelles structurées, avec des exécutions parallèles et un temps d’arrêt nul basculement. Si votre classeur montre les signes, c’est la conversation à avoir.

Réserver un appel découverte →

Pour en savoir plus : consultez les articles Google Sheets associés et le Étude de cas sur la migration d’AppSheet vers SQL, et Quand Google Sheets arrête de évoluer.