Maison > base de données > tutoriel mysql > le corps du texte

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

Linda Hamilton
Libérer: 2024-11-27 22:50:10
original
702 Les gens l'ont consulté

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal