[工具類]導出mysql數據字典,並轉爲md格式

1、通過如下sql查詢出數據字典信息

SELECT
	table_schema AS '數據庫',
	TABLE_NAME AS '表名',
	COLUMN_NAME AS '字段名',
	COLUMN_TYPE AS '數據類型',
	IS_NULLABLE AS '允許爲空',
	EXTRA AS 'PK',
	COLUMN_COMMENT AS '字段說明' 
FROM
	information_schema.COLUMNS 
WHERE
	table_schema IN ( "數據庫名" );

2、導出結果爲txt.並將字段分隔符設置爲逗號。 

3、運行下列代碼,將上一步導出的txt轉爲md格式。

import lombok.Data;

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;


public class ProcessMsqlDD {

  public static void main(String[] args) {
    try (Stream<String> lines =
                 Files.lines(Paths.get("C:\\Users\\wafer\\Desktop\\測試查詢.txt"), Charset.defaultCharset())) {
      TreeMap<String, TreeMap<String, List<DD>>> collect = lines
        .map(line -> {
          line = line.replace("\"", "");
          String[] split = line.split(",");
          DD dd = new DD();
          dd.setTable_schema(split[0]);
          dd.setTable_name(split[1]);
          dd.setColumn_name(split[2]);
          dd.setColumn_type(split[3]);
          dd.setIs_nullable(split[4]);
          if (split.length > 5) {
            dd.setExtra(split[5]);
          }
          if (split.length > 6) {
            dd.setColumn_comment(split[6]);
          }
          return dd;
        })
        .collect(Collectors.groupingBy
          (DD::getTable_schema, TreeMap::new,
            Collectors.groupingBy
              (DD::getTable_name, TreeMap::new,
                Collectors.toList())));
      collect.entrySet().stream()
        .forEach(key -> {
          String name = key.getKey();
          System.out.println("### 庫:" + name.substring(name.indexOf("_") + 1));
          key.getValue().entrySet().stream()
            .forEach(key1 -> {
              System.out.println("#### 表:" + key1.getKey());
              System.out.println("字段名 | 數據類型 | 允許爲空 | PK | 字段說明");
              System.out.println("---|---|---|---|---");
              key1.getValue().stream().forEach(x -> System.out.println(x.toString()));
            });
        });
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

@Data
class DD {
  private String table_schema;
  private String table_name;
  private String column_name;
  private String column_type;
  private String is_nullable;
  private String extra;
  private String column_comment;

  @Override
  public String toString() {
    return column_name + " | " + column_type + " | " + is_nullable + " | " + extra + " | " + column_comment;
  }
}

 

發佈了7 篇原創文章 · 獲贊 1 · 訪問量 5112
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章