将SqlServer表转换为Markdown
发布时间:2020-12-12 13:42:55 所属栏目:MsSql教程 来源:网络整理
导读: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 = AppDomai
Program.csusing 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),"------------------------------------------------------------------------------------".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(快来修改)列名 |
字段 |
数据类型 |
PK |
NULL |
DEFAULT |
描述 |
| 列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | Id列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | Id列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | CategoryId列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | Id列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | Id列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | Id列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | name列名 | 字段 | 数据类型 | PK | NULL | DEFAULT | 描述 | Id
---|
相关内容
- mysql 5.7.9 winx64在windows上安装遇到的问题
- SQLSERVER创建维护计划失败时解决办法
- sql – 从有条件的巨大数据库中选择n个随机行
- Petapoco的多重映射可以处理多个JOIN吗?
- Sqlserver 中必须使用分号的两种情况--【叶子】
- sqlserver 中NOLOCK、HOLDLOCK、UPDLOCK、TABLOCK、TABLOCK
- CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Gene
- SQL Server SQL批量插入数据几种方案的性能详细对比
- sqlserver默认端口修改后,访问网站报错
- sql – 什么是VertiPaq及其工作原理