查询字典信息
SELECT
a.TABLE_SCHEMA AS '数据库',
a.TABLE_NAME AS '表名',
IFNULL(IF(length(trim(b.TABLE_COMMENT))>0,b.TABLE_COMMENT,null),'xxx') AS '表注释',
a.COLUMN_NAME AS '字段名',
a.COLUMN_TYPE AS '数据类型',
a.IS_NULLABLE AS '允许为空',
a.COLUMN_DEFAULT AS '默认值',
a.COLUMN_KEY AS 'Key',
a.COLUMN_COMMENT AS '字段说明'
FROM
information_schema.COLUMNS a
LEFT JOIN information_schema.TABLES b ON a.TABLE_NAME = b.TABLE_NAME
WHERE
a.TABLE_SCHEMA = "my-common"
and b.TABLE_SCHEMA = "my-common";
导出结果到txt文件(例如导出到/Users/zhy/Downloads/data.txt),
包含列的标题-不勾选,
字段分隔符-其他符号 |||
用Java代码读取txt转换成MD文档
public class ProcessMsqlDD {
public static void main(String[] args) {
try (Stream<String> lines =
Files.lines(Paths.get("/Users/zhy/Downloads/data.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.setTable_comment(split[2]);
dd.setColumn_name(split[3]);
dd.setColumn_type(split[4]);
dd.setIs_nullable(split[5]);
if(split.length > 6){
dd.setColumn_default(split[6]);
}
if (split.length > 7) {
dd.setColumn_key(split[7]);
}
if (split.length > 8) {
dd.setColumn_comment(split[8]);
}
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()+"("+ key1.getValue().get(0).getTable_comment()+")");
System.out.println("| " + String.format("%-23s","字段名") + " | " + String.format("%-12s","数据类型") + " | " + String.format("%-4s","允许为空") + " | " + String.format("%-18s","默认值") + " | " + String.format("%-5s","Key") + " | "+String.format("%-35s","字段说明")+ " |");
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 table_comment;
private String column_name;
private String column_type;
private String is_nullable;
private String column_default;
private String column_key;
private String column_comment;
@Override
public String toString() {
return "| " + String.format("%-25s",column_name) + " | " + String.format("%-15s",column_type) + " | " + String.format("%-7s",is_nullable) + " | " + String.format("%-20s",column_default) + " | " + String.format("%-5s",column_key) + " | " + String.format("%-35s",column_comment) + " |";
}
}
评论区