


Comment convertir un schéma MySQL en GitHub Wiki Markdown à l'aide de procédures stockées ?
Nov 27, 2024 pm 10:50 PMConversion 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 :
- Crée des tables temporaires pour stocker les données intermédiaires.
- 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.
- 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.
- 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.
- 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 :
- Parcourt les lignes de la table reportDataDefs, en extrayant les données nécessaires.
- 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 .
- Formate les données de chaque colonne selon une largeur et un alignement cohérents.
- Sépare les colonnes formatées avec des barres verticales.
- 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.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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

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

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

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 configurer le cryptage SSL / TLS pour les connexions MySQL?
