Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengeksport Skema MySQL ke Markdown GitHub Menggunakan Prosedur Tersimpan?

Bagaimanakah Saya Boleh Mengeksport Skema MySQL ke Markdown GitHub Menggunakan Prosedur Tersimpan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-25 05:28:18843semak imbas

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

Skema MySQL boleh dieksport ke format penurunan harga GitHub dengan bantuan prosedur tersimpan. Berikut ialah contoh menggunakan dua prosedur tersimpan, yang boleh dirantai bersama untuk mencapai output yang diingini.

Rantaian Prosedur Tersimpan

Prosedur tersimpan pertama menyediakan data untuk pelaporan dan berikan nombor sesi untuk memastikan output diasingkan.

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$$

Prosedur tersimpan kedua menggunakan kursor dan jadual khas untuk menghasilkan output yang cantik, menyerupai perintah DESCRIBE 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$$

Penggunaan

Panggil prosedur tersimpan pertama dengan yang diperlukan parameter.

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.

Output

Output akan dijana dalam jadual reportOutput dan boleh diambil seperti berikut:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeksport Skema MySQL ke Markdown GitHub Menggunakan Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn