Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann ich ein MySQL-Schema mithilfe gespeicherter Prozeduren in GitHub Markdown exportieren?

Mary-Kate Olsen
Freigeben: 2024-11-25 05:28:18
Original
829 Leute haben es durchsucht

How Can I Export a MySQL Schema to GitHub Markdown Using Stored Procedures?

Das MySQL-Schema kann mithilfe gespeicherter Prozeduren in das GitHub-Markdown-Format exportiert werden. Hier ist ein Beispiel mit zwei gespeicherten Prozeduren, die miteinander verkettet werden können, um die gewünschte Ausgabe zu erzielen.

Kette gespeicherter Prozeduren

Die erste gespeicherte Prozedur bereitet die Daten für die Berichterstellung vor und weist eine Sitzungsnummer zu, um die Ausgabe isoliert zu halten.

CREATE PROCEDURE `Reporting101a`.`describeTables_v2a`(
    IN dbName varchar(100), -- the dbname to report table structures
    OUT theSession int, -- OUT parameter for session# assigned
    IN deleteSessionRows BOOL, -- true for delete rows when done from main reporting table for this session#
    IN callTheSecondStoredProc BOOL -- TRUE = output is from Pretty output in Second Stored Proc. FALSE= not so pretty output
)
BEGIN

    DECLARE thisTable CHAR(100);

    DROP TEMPORARY TABLE IF EXISTS Reporting101a.tOutput;
    CREATE TEMPORARY TABLE Reporting101a.tOutput
    (   id int auto_increment primary key,
        tblName varchar(100) not null,
        ordVal int not null,
        cField varchar(100) not null,
        cType varchar(100) not null,
        cNull varchar(100) not null,
        cKey varchar(100) not null,
        cDefault varchar(100) null,
        cExtra varchar(100) null
    );

    INSERT Reporting101a.tOutput(tblName,ordVal,cField,cType,cNull,cKey,cDefault,cExtra)
    SELECT TABLE_NAME,ORDINAL_POSITION,COLUMN_NAME AS Field, COLUMN_TYPE AS TYPE, RPAD(IS_NULLABLE,4,' ') AS 'Null', 
    RPAD(COLUMN_KEY,3,' ') AS 'Key',RPAD(COLUMN_DEFAULT,7,' ') AS 'DEFAULT',EXTRA AS Extra
    FROM information_schema.columns WHERE table_schema = dbName ORDER BY table_name,ordinal_position; 
    -- select * from information_schema.columns WHERE table_schema = '57security' order by table_name,ordinal_position; 

    ...

END$$
Nach dem Login kopieren

Die zweite gespeicherte Prozedur verwendet einen Cursor und eine spezielle Tabelle, um die hübsche Ausgabe zu generieren. ähnelt dem DESCRIBE-Befehl von MySQL.

CREATE PROCEDURE `Reporting101a`.`Print_Tables_Like_Describe`(
    pSessionId INT
)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    ...

    CREATE TABLE IF NOT EXISTS Reporting101a.reportOutput
    (   lineNum INT AUTO_INCREMENT PRIMARY KEY,
        sessionId INT NOT NULL,
        lineOut varchar(100) NOT NULL
    );

    ...

END$$
Nach dem Login kopieren

Verwendung

Rufen Sie die erste gespeicherte Prozedur mit den erforderlichen Parametern auf.

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

-- See **Note3**
-- 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);

-- See **Note4**
-- Primarily used if the 4th parameter above is false
call Reporting101a.Print_Tables_Like_Describe(@theOutVar); -- loads data for prettier results in chunk format.
Nach dem Login kopieren

Ausgabe

Die Ausgabe wird in der Tabelle „reportOutput“ generiert und kann angezeigt werden wie folgt abgerufen:

select lineOut as '' from Reporting101a.reportOutput where sessionId=pSessionId order by lineNum;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich ein MySQL-Schema mithilfe gespeicherter Prozeduren in GitHub Markdown exportieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage