Maison base de données tutoriel mysql Comment convertir un schéma MySQL en GitHub Wiki Markdown à l'aide de procédures stockées ?

Comment convertir un schéma MySQL en GitHub Wiki Markdown à l'aide de procédures stockées ?

Nov 27, 2024 pm 10:50 PM

How to Convert a MySQL Schema to GitHub Wiki Markdown Using Stored Procedures?

Conversion du schéma MySQL en GitHub Wiki Markdown

Le problème initial soulevait des inquiétudes concernant l'exportation d'un schéma de base de données MySQL au format Markdown, en particulier sous forme de tables. Pour résoudre ce problème, une réponse détaillée fournit une solution impliquant l'utilisation de deux procédures stockées.

Première procédure stockée : décrireTables_v2a

Cette procédure prend un nom de base de données en entrée et génère une sortie qui ressemble à la sortie de DESCRIBE myTable pour toutes les tables de cette base de données. Il y parvient en utilisant la base de données INFORMATION_SCHEMA et en manipulant les résultats pour fournir une sortie plus détaillée et organisée. La sortie est stockée dans la table reportDataDefs de la base de données Reporting101a.

Paramètres :

  • dbName : le nom de la base de données sur laquelle créer le rapport.
  • theSession : Un paramètre OUT pour contenir le numéro de session attribué pour cette opération.
  • deleteSessionRows : un booléen indiquant s'il faut supprimer des lignes de la table reportDataDefs pour cette session après avoir généré la sortie.
  • callTheSecondStoredProc : un booléen indiquant s'il faut appeler automatiquement la deuxième procédure stockée pour jolie impression (de type DESCRIBE) sortie.

Étapes :

  1. Crée des tables temporaires pour stocker les données intermédiaires.
  2. Insère les données dans les tables temporaires de la base de données INFORMATION_SCHEMA, en tenant compte des noms de tables et de colonnes, des types, de la nullité, des clés, etc. informations.
  3. Remplit la table reportDataDefs avec les données des tables temporaires, y compris des colonnes supplémentaires pour les longueurs maximales de colonne et de type et les compteurs pour les valeurs nulles, clés, par défaut et supplémentaires.
  4. Si callTheSecondStoredProc est VRAI, il appelle une autre procédure stockée nommée Print_Tables_Like_Describe qui génère une sortie joliment imprimée et l'ajoute au reportOutput table.
  5. Si callTheSecondStoredProc est FALSE, il renvoie un ensemble de résultats des données de la table reportDataDefs pour le numéro de session donné.

Deuxième procédure stockée : Print_Tables_Like_Describe

Cette procédure prend un numéro de session en entrée et récupère les données de la table reportDataDefs. Il génère ensuite une sortie au format Markdown qui ressemble à la sortie DESCRIBE myTable mais pour chaque table de la base de données spécifiée.

Étapes :

  1. Parcourt les lignes de la table reportDataDefs, en extrayant les données nécessaires.
  2. Génère un en-tête de table pour chaque table avec le nom du champ, le type, la nullité, la clé, la valeur par défaut et des informations supplémentaires .
  3. Formate les données de chaque colonne selon une largeur et un alignement cohérents.
  4. Sépare les colonnes formatées avec des barres verticales.
  5. Renvoie la sortie formatée sous la forme d'un ensemble de résultats.

Utilisation :

Pour utiliser les procédures stockées, l'utilisateur peut fournir le nom de la base de données requis et d'autres paramètres. Voici un exemple d'utilisation :

SET @theOutVar =-1; -- A variable used as the OUT variable below

-- Note: with `TRUE` as the 4th parameter, this is a one call deal. Meaning, you are done.
call Reporting101a.describeTables_v2a('stackoverflow',@theOutVar,false,true);

-- Primarily used if the 4th parameter above is false
call Reporting101a.Print_Tables_Like_Describe(@theOutVar); -- loads data for prettier results in chunk format.
Copier après la connexion

Cette utilisation appellerait d'abord la procédure stockée Reporting101a.describeTables_v2a et récupérerait le numéro de session. Ensuite, il appellerait automatiquement la procédure stockée Reporting101a.Print_Tables_Like_Describe avec ce numéro de session pour générer la sortie joliment imprimée. La sortie serait renvoyée sous la forme d'un ensemble de résultats, qui peut être consommé et formaté davantage, par exemple en la convertissant en un tableau au format Markdown.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Réduisez l'utilisation de la mémoire MySQL dans Docker Réduisez l'utilisation de la mémoire MySQL dans Docker Mar 04, 2025 pm 03:52 PM

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Mar 19, 2025 pm 03:51 PM

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée Mar 04, 2025 pm 04:01 PM

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin) Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin) Mar 04, 2025 pm 03:54 PM

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Qu'est-ce que Sqlite? Aperçu complet Qu'est-ce que Sqlite? Aperçu complet Mar 04, 2025 pm 03:55 PM

Qu'est-ce que Sqlite? Aperçu complet

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape Mar 04, 2025 pm 03:49 PM

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)? Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)? Mar 18, 2025 pm 12:00 PM

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Mar 18, 2025 pm 12:01 PM

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?

See all articles