首页  >  文章  >  数据库  >  如何使用存储过程将 MySQL 架构转换为 GitHub Wiki Markdown?

如何使用存储过程将 MySQL 架构转换为 GitHub Wiki Markdown?

Linda Hamilton
Linda Hamilton原创
2024-11-27 22:50:10703浏览

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

将 MySQL 架构转换为 GitHub Wiki Markdown

最初的问题引起了有关将 MySQL 数据库架构导出为 Markdown 格式(特别是作为表)的担忧。为了解决这个问题,详细的回复提供了一个涉及使用两个存储过程的解决方案。

第一个存储过程:describeTables_v2a

此过程将数据库名称作为输入,生成类似于该数据库中所有表的 DESCRIBE myTable 输出的输出。它通过利用 INFORMATION_SCHEMA 数据库并操作结果以提供更详细和更有组织的输出来实现这一点。输出存储在 Reporting101a 数据库的 reportDataDefs 表中。

参数:

  • dbName:要报告的数据库名称。
  • theSession:一个 OUT 参数,用于保存为此分配的会话号操作。
  • deleteSessionRows:一个布尔值,指示生成输出后是否从该会话的 reportDataDefs 表中删除行。
  • callTheSecondStoredProc:一个布尔值,指示是否自动调用第二个存储过程以进行漂亮操作。打印(类似 DESCRIBE)输出。

步骤:

  1. 创建临时表来存储中间数据。
  2. 将数据插入到临时表中INFORMATION_SCHEMA 数据库,考虑表和列名称、类型、可空性、键等信息。
  3. 使用临时表中的数据填充 reportDataDefs 表,包括列的附加列和类型最大长度以及 null、键、默认值和额外值的计数器。
  4. 如果调用TheSecondStoredProc为 TRUE,它调用另一个名为 Print_Tables_Like_Describe 的存储过程,该过程生成漂亮的打印输出并将其添加到 reportOutput表。
  5. 如果 callTheSecondStoredProc 为 FALSE,它将返回给定会话号的 reportDataDefs 表中数据的结果集。

第二个存储过程:Print_Tables_Like_Describe

此过程将会话编号作为输入并从reportDataDefs 表中检索数据。然后,它生成类似于 DESCRIBE myTable 输出的 Markdown 格式输出,但针对指定数据库中的每个表。

步骤:

  1. 迭代reportDataDefs表中的行,提取必要的数据。
  2. 为每个表生成一个表头,其中包含字段名称、类型、可为空性、键、默认值和额外信息.
  3. 将每列的数据格式化为一致的宽度和对齐方式。
  4. 分隔格式化的数据带有竖线的列。
  5. 将格式化输出作为结果集返回。

用法:

要使用存储过程,用户可以提供所需的数据库名称和其他参数。以下是用法示例:

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.

此用法将首先调用 Reporting101a.describeTables_v2a 存储过程并检索会话号。然后,它会使用该会话号自动调用 Reporting101a.Print_Tables_Like_Describe 存储过程来生成打印精美的输出。输出将作为结果集返回,可以进一步使用和格式化,例如将其转换为 Markdown 格式的表。

以上是如何使用存储过程将 MySQL 架构转换为 GitHub Wiki Markdown?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn