You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server表DDL与可逆向JSON Schema互转实现及技术问询

SQL Server DDL与JSON Schema双向转换的工具及元数据存储方案

一、是否存在现成转换工具

目前没有完全覆盖SQL Server所有特性(如计算列、IDENTITY、DEFAULT约束等)的开箱即用通用工具,但可以通过以下方式实现双向转换:

  • 利用SQL Server系统视图(sys.tables、sys.columns、sys.computed_columns、sys.default_constraints等)提取完整表元数据,再通过脚本或手动映射为带扩展元数据的JSON Schema
  • 逆向转换时,解析JSON Schema中的扩展元数据,生成对应的CREATE TABLE语句
  • 若需快速搭建原型,可基于现有SQL元数据提取工具二次开发,补充JSON Schema的结构和扩展字段

二、JSON Schema中自定义元数据的存储位置

JSON Schema允许通过带命名空间前缀的自定义属性(通常用x-sql-*格式)存储SQL Server特有的元数据,既不会与标准JSON Schema关键字冲突,也能清晰标识元数据用途。结合你提供的示例DDL,对应的JSON Schema示例如下:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Customers",
  "type": "object",
  "x-sql-table-name": "Customers",
  "properties": {
    "Id": {
      "type": "integer",
      "x-sql-type": "INT",
      "x-sql-primary-key": true,
      "x-sql-identity": "(1, 1)"
    },
    "FirstName": {
      "type": ["string", "null"],
      "x-sql-type": "NVARCHAR(50)",
      "x-sql-nullable": true
    },
    "LastName": {
      "type": ["string", "null"],
      "x-sql-type": "NVARCHAR(50)",
      "x-sql-nullable": true
    },
    "Full Name": {
      "type": "string",
      "x-sql-computed-column": true,
      "x-sql-computed-expression": "CONCAT(FirstName, ' ', LastName)",
      "x-sql-persisted": true
    },
    "City": {
      "type": "string",
      "x-sql-type": "VARCHAR(MAX)",
      "x-sql-nullable": false
    },
    "State": {
      "type": "string",
      "x-sql-type": "VARCHAR(50)",
      "x-sql-nullable": false,
      "x-sql-default": "'CO'"
    },
    "SpecialRank": {
      "type": "number",
      "x-sql-type": "DECIMAL(18, 2)",
      "x-sql-nullable": false,
      "x-sql-default": "0"
    }
  }
}

关键元数据存储说明:

  • 顶层x-sql-table-name:存储SQL表名
  • 每个字段属性下的x-sql-type:存储SQL原生数据类型(含长度、精度等参数)
  • 针对特殊特性的自定义字段:
    • x-sql-primary-key:标识主键
    • x-sql-identity:存储IDENTITY种子和增量
    • x-sql-computed-column/x-sql-computed-expression/x-sql-persisted:记录计算列的表达式及是否持久化
    • x-sql-nullable:标识字段是否允许为空
    • x-sql-default:存储默认值约束内容

内容的提问来源于stack exchange,提问作者Jerry Nixon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:35:06