根据json数据生成建表脚本的解决方案
2016-12-01 10:28
274 查看
开发中,经常需要调用各种接口,而大部分接口都以json格式返回数据。
前段时间,有个需求,需要将json数据保存进数据库,而根据json数据建立相应的数据库表是个很耗体力的工作,所以决定开发一个小工具 ,可以根据json数据自动生成建表脚本。
该工具使用Newtonsoft.Json序列化工具解析json数据,再逐字段生成SQL脚本。下面是工具的主体代码。
本工具暂时生成的是mysql的建库脚本,也只支持varchar等很少的类型。工具的画面如下图所示。
后面计划,丰富工具这持的类型,丰富支持的数据库系统,待续。
前段时间,有个需求,需要将json数据保存进数据库,而根据json数据建立相应的数据库表是个很耗体力的工作,所以决定开发一个小工具 ,可以根据json数据自动生成建表脚本。
该工具使用Newtonsoft.Json序列化工具解析json数据,再逐字段生成SQL脚本。下面是工具的主体代码。
using Newtonsoft.Json.Linq; using System; using System.Windows.Forms; namespace YLTool { public partial class frmCreateSqlFromJson : Form { private string sepMark = " "; public frmCreateSqlFromJson() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { JObject jo = JObject.Parse(textBox1.Text); string sql = @"CREATE TABLE NND(" + Environment.NewLine; sql = sql + @"NND_id mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT 'NND_id',"; foreach (var j in jo) { if ("Integer".Equals(j.Value.Type.ToString())) { if (j.Key.Contains("is_") || j.Key.Contains("type")) { sql = sql + j.Key + sepMark + @"tinyint(4) NOT NULL COMMENT" + sepMark + "'" + j.Key + "'," + Environment.NewLine; } else { sql = sql + j.Key + sepMark + @"mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT" + sepMark + "'" + j.Value + "'," + Environment.NewLine; } } else if ("String".Equals(j.Value.Type.ToString())) { decimal tempDecimal = 0; DateTime dt = new DateTime(); if (decimal.TryParse(j.Value.ToString(), out tempDecimal)) { sql = sql + j.Key + sepMark + @"decimal(11,2) NOT NULL COMMENT" + sepMark + "'" + j.Key + "'," + Environment.NewLine; continue; } if (DateTime.TryParse(j.Value.ToString(), out dt)) { sql = sql + j.Key + sepMark + @"datetime NOT NULL COMMENT" + sepMark + "'" + j.Key + "'," + Environment.NewLine; continue; } else { sql = sql + j.Key + sepMark + @"varchar(50) NOT NULL COMMENT" + sepMark + "'" + j.Key + "'," + Environment.NewLine; continue; } } } sql = sql + @"PRIMARY KEY (NND_id)" + Environment.NewLine; sql = sql + ")"; textBox2.Text = sql; } catch (Exception ex) { textBox2.Text = "出错啦!~~~~~~~~~~~~~~" + Environment.NewLine + ex.Message; } } } }
本工具暂时生成的是mysql的建库脚本,也只支持varchar等很少的类型。工具的画面如下图所示。
后面计划,丰富工具这持的类型,丰富支持的数据库系统,待续。
相关文章推荐
- 根据一个表的数据生成插入脚本
- EasyUI_tree根据数据库数据生成树形结构JSON格式
- jQuery 根据JSON数据动态生成表格
- sql根据一个表的数据生成插入脚本
- jQuery 根据JSON数据动态生成表格
- java根据数据库中的数据 的list 生成 tree 型 json
- jsp页面根据json数据动态生成table
- 根据JSON数据,自动生成Table
- jsp页面根据json数据动态生成table
- jQuery EasyUI:根据数据库内容生成适合于easyui-tree的JSON数据格式
- js+jquery根据json数据生成表格 及 表格和按钮CSS代码
- 根据库中的表自动生成数据字典的T-SQL脚本
- 根据TR069数据模型xml文件生成用于XACS中可用于导入的脚本
- [jQuery插件开发][dynamicTable2.0]根据JSON数据自动生成HTML Table
- 根据城市表生成json数据
- 根据JSON数据,自动生成Table
- 根据JSON数据,自动生成Table
- php获取数据库中数据生成json,中文乱码问题的解决方案
- dwz根据json数据动态生成树
- 基于jquery的分页脚本,非常好用,配合后台生成的json数据。