将SqlServer表转换为Markdown
来源:互联网 发布:产品经理流程图软件 编辑:程序博客网 时间:2024/06/06 09:06
Program.cs
using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.IO;using System.Text;namespace BuildMd{ class Program { static void Main(string[] args) { string pathBase = AppDomain.CurrentDomain.BaseDirectory; string mdPath = pathBase; File.Delete(mdPath + "test.md"); DataTable tables = ExecuteDataTable("select * from INFORMATION_SCHEMA.TABLES"); foreach (DataRow tableName in tables.Rows) { string tablename = (string)tableName["TABLE_NAME"]; //if (tablename.StartsWith("WX_")) //{ List<string> Rows = new List<string>(); Rows.Add("### " + tablename + "(*快来修改我*)"); Rows.Add(""); Rows.Add("| 列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 |"); Rows.Add("|----------------|----------------------------|--------------------|------|-------|--------------|------------------------------------------------------------------------------------|"); DataTable tableColumns = ExecuteDataTable("select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=@tablename", new SqlParameter("tablename", tablename)); foreach (DataRow column in tableColumns.Rows) { string column_name = (string)column["COLUMN_NAME"]; string data_type = (string)column["DATA_TYPE"]; string character_maximum_length = column["CHARACTER_MAXIMUM_LENGTH"].ToString(); string column_default = column["COLUMN_DEFAULT"].ToString(); string is_nullable = column["IS_NULLABLE"].ToString(); MDTableRow mdtablerow = new MDTableRow(); mdtablerow.column_name = column_name; mdtablerow.data_type = data_type; mdtablerow.character_maximum_length = character_maximum_length; mdtablerow.column_default = column_default; mdtablerow.is_nullable = is_nullable; Rows.Add(WriteTableRow(mdtablerow)); } //File.Delete(mdPath + "test.md"); File.AppendAllLines(mdPath + string.Format("{0}.md", tableName["TABLE_CATALOG"]), Rows); Console.WriteLine(tablename + " 生成完成"); //} } Console.WriteLine(); Console.WriteLine("生成结束!"); Console.ReadKey(); } public static string WriteTableRow(MDTableRow mdtablerow) { string datatype = mdtablerow.character_maximum_length == "" || mdtablerow.character_maximum_length == "2147483647" ? "`" + mdtablerow.data_type.ToUpper() + "`" : "`" + mdtablerow.data_type.ToUpper() + "(" + mdtablerow.character_maximum_length + ")`"; string data_tp = "`" + System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(SqlDataTypeToNetDataType(mdtablerow.data_type)) + "`"; string str = string.Format("|{0}|{1}|{2}|{3}|{4}|{5}|{6}|" , Pad("", "----------------".Length, false) , Pad(mdtablerow.column_name, "----------------------------".Length) , Pad(mdtablerow.character_maximum_length == "-1" ? "`" + mdtablerow.data_type.ToUpper() + "(MAX)`" : datatype, "--------------------".Length) , Pad(mdtablerow.column_name == "ID" ? "PK" : "", "------".Length) , Pad(mdtablerow.is_nullable == "NO" ? "" : "NULL", "-------".Length) , Pad(mdtablerow.column_default, "--------------".Length) , Pad("", "------------------------------------------------------------------------------------".Length) ); return str; } public static string Pad(string basestr, int padlength, bool isCN = false) { int baselength = (int)(basestr.Length * (isCN ? 2 : 1)); int length = padlength - baselength; return basestr.PadLeft(2).PadRight(padlength - (isCN ? basestr.Length : 0)); } public static DataTable ExecuteDataTable(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(@"server=WZY-PC;database=HibernateBlog;uid=sa;pwd=xxxxxx;")) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); DataTable dt = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt); return dt; } } } private static string SqlDataTypeToNetDataType(string datatype) { switch (datatype) { case "int": return "int"; case "nvarchar": case "varchar": case "nchar": case "char": return "string"; case "bit": return "bool"; case "datetime": case "datetime2": return "DateTime"; case "decimal": return "decimal"; default: return "object"; } } } class MDTableRow { public string column_name { get; set; } public string data_type { get; set; } public string character_maximum_length { get; set; } public string column_default { get; set; } public string is_nullable { get; set; } }}
运行结果如图:
UsersBlogs(快来修改)
INT
BlogId INT
Blogs(快来修改)
INT
Title NVARCHAR(255)
NULL Subtitle NVARCHAR(255)
NULL AllowsComments BIT
NULL CreatedAt DATETIME
NULL Categories(快来修改)
INT
Name NVARCHAR(255)
NULL CategoriesPosts(快来修改)
INT
PostId INT
Comments(快来修改)
INT
Name NVARCHAR(255)
NULL Email NVARCHAR(255)
NULL HomePage NVARCHAR(255)
NULL Ip INT
NULL Text NVARCHAR(255)
NULL PostId INT
NULL Posts(快来修改)
INT
Title NVARCHAR(255)
NULL Text NVARCHAR(255)
NULL PostedAt DATETIME
NULL BlogId INT
NULL UserId INT
NULL Tags(快来修改)
INT
Name NVARCHAR(255)
NULL ItemId INT
NULL ItemType INT
NULL sysdiagrams(快来修改)
NVARCHAR(128)
principal_id INT
diagram_id INT
version INT
NULL definition VARBINARY(MAX)
NULL Users(快来修改)
INT
Password VARBINARY(8000)
NULL Username NVARCHAR(255)
NULL Email NVARCHAR(255)
NULL CreatedAt DATETIME
NULL Bio NVARCHAR(255)
NULL 阅读全文
0 0
- 将SqlServer表转换为Markdown
- 将word转换为markdown
- 将markdown文件转换为pdf
- 将markdown文件转换为pdf
- 使用 markdownj 将 markdown 转换为 html
- 将Excel表格转换为MarkDown表格
- Pandoc将markdown转换为word
- 【原创】SqlServer、利用递归查询、将日期范围转换为日期表
- SQLSERVER数据库将数值类型转换为字符串的问题
- 将数据库Windows验证方式转换为Sqlserver验证方式
- sqlserver将时间转换为特定的格式(字符串)
- 智能将SqlServer的查询语句转换为分页语句
- 如何将 word 文件转换为 markdown 文件
- 使用Pandoc命令将Markdown格式文件转换为HTML格式文件
- 利用Nodejs+Express将Markdown转换为HTML(附源码)
- ubuntu 16.04 使用 pandoc + xelatex 将 markdown 转换为 pdf
- 使用showdown.js将Markdown文档转换为HTML
- windows使用Pandoc将Markdown转换为PDF文件
- 为什么使用where 1 =1 或者 where 1 = 0
- iterator、for遍历集合的优缺点
- JAVA微信公众号开发之二维码的创建与获取
- 小e开发板(esp8266)连接Arduino实现WiFi扫描
- 1.7 HashMap源码分析
- 将SqlServer表转换为Markdown
- LeetCode 9. Palindrome Number
- C
- HDU 6053 TrickGCD 莫比乌斯反演||筛法
- linux绑定双网卡配置及各模式数据流量传输方式
- Leetcode 644. Maximum Average Subarray II 最大平均区间2 解题报告
- 关键字
- Ceres-Solver学习笔记(6)
- R语言粒子群优化算法