数据库要导出表结构很容易,直接用mysqldump就好了,但是要生成pdf的表格方档就没有现成的工具了,网上找了很多均没有找到合适自己的,于是就自己写一个,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$con = new \mysqli('192.168.1.100', 'test', '123456', 'information_schema'); $con->query('SET NAMES utf8'); $sql = "SELECT table_schema,table_name,table_comment FROM tables WHERE table_schema = 'test'"; //获取指定数据库的所有表数据 $tables = $con->query($sql)->fetch_all(MYSQLI_ASSOC); //生成markdown文档 foreach ($tables as $item) { $sql = "SELECT column_name,column_type,column_comment FROM COLUMNS WHERE table_schema = '%s' AND table_name = '%s'"; $sql = sprintf($sql, $item['table_schema'], $item['table_name']); //获取表结构数据 $column = $con->query($sql)->fetch_all(MYSQLI_ASSOC); //生成文档 echo $this->tableTpl($item['table_name'], $item['table_comment'], $column); } |
上面的文档模板代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
private function tableTpl($table_name, $table_comment, $column) { $tpl = "##### {$table_name} ({$table_comment}表)<br> | **字段名称** | **字段类型** | **字段含义** |<br> | :--: | :--: | :--: |<br>"; if ($column) { foreach ($column as $col) { $comment = $col['column_comment']; if (empty($col['column_comment'])) { $comment = strtoupper($col['column_name']); } $tpl .= "| {$col['column_name']} | {$col['column_type']} | {$comment} |<br>"; } } return $tpl; } |
主要原理如下:
1.通过查information_schema表获得数据库表结构和相关描述内容
2.生成markdown格式的文档
3.利用markdown工具typora来导出pdf