# 数据库方言管理

# 概述

本功能用于管理各数据库SQL语句模板。同步到数据库、从数据库同步、导出表结构和表数据脚本这三个功能都通过此模板动态生成相应的SQL语句。

【模块路径:】系统配置化平台 -> 元数据 -> 数据库方言管理

# 配置方言

点击页面中新增或编辑按钮,即可配置各数据库方言。

方言配置遵循以下规则:

  • 方言模板语法为freemarker,详细规则参考freemarker模板引擎官方文档 (opens new window)
  • 系统中已针对所有支持的数据库配置了默认方言,用户可根据需求进行自定义修改
  • 一个数据库只允许配置一个方言
  • 统一执行属性:后台执行SQL时,分为单条执行和批量执行两种形式
    • 开关关闭:以;为间隔,依次单条执行SQL
    • 开关打开:批量执行同一条方言内配置的所有SQL语句

每种方言中,可以使用的动态变量(模板入参)是内置的,具体说明如下:

  • 创建表
    • 作用场景:同步到数据库、从数据库同步、导出结构脚本
    • 可用变量:
{
    "tableName": "a_test", //表名
	"comment": "这是一个测试表", //表备注
	"primaryKeyName": "pk_a_test", //主键约束名
    "primaryKeys": "id,name",  //主键字段,逗号拼接
	"fields": [{ //字段集合
        "fieldName": "id", //字段名
        "oldFieldName": "idold", //修改前字段名
        "fieldType": "int" //字段类型      
        "comment": "主键", //字段备注
        "defaultValue": "1", //默认值
        "isNotNull": true, //是否为空
		"isAutoIncrement": true, //是否自增
		"isOnlyPrimaryKey": false, //是否是唯一主键
		"primaryKeyName": "pk_a_test", //主键名
	}, {
		"isNotNull": true,
		"isAutoIncrement": false,
		"fieldName": "name",
		"oldFieldName": "nameold",
		"comment": "名称",
		"fieldType": "varchar"
	}]
}
  • 更新表
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
    "tableName": "a_test", //表名
    "oldTableName": "a_test_old", //修改前表名
	"comment": "这是一个测试表2"  //表备注
}
  • 删除表
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
  "tableName": "a_test" //表名
}
  • 创建主键
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
    "tableName": "a_test", //表名
	"primaryKeyName": "pk_a_test", //主键约束名
    "primaryKeys": "id,name"  //主键字段,逗号拼接
}
  • 删除主键
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
    "tableName": "a_test", //表名
	"primaryKeyName": "pk_a_test" //主键约束名
}
  • 创建索引
    • 作用场景:同步到数据库、从数据库同步、导出结构脚本
    • 可用变量:
{
  "tableName": "a_test", //表名
  "indexes": [{ //索引集合
    {
      "indexCode": "idx_a_test_1", //索引名
      "indexName": "索引1", //索引备注
      "indexType": "2", //索引类型(1-普通索引,2-唯一索引)
      "fieldCodes": "id,name" //索引字段   
  }]
}
  • 删除索引
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
  "tableName": "a_test", //表名
  "indexCodes": ["idx_a_test_1"] //删除索引编码集合
}
  • 创建约束
    • 作用场景:同步到数据库、从数据库同步、导出结构脚本
    • 可用变量:
{
  "tableName": "a_test", //表名
  "constraints": [{ //约束集合
    {
      "constraintCode": "idx_a_test_1", //约束名
      "constraintName": "索引1", //约束备注
      "constraintType": "PRIMARY", //约束类型(PRIMARY-主键约束,UNIQUE-唯一约束)
      "fieldCodes": "id,name" //约束字段  
  }]
}
  • 删除约束
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
  "tableName": "a_test", //表名
  "constraintCodes": ["idx_a_test_1"] //删除索约束编码集合
}
  • 新增字段
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
    "tableName": "a_test", //表名
	"fields": [{ //字段集合
        "fieldName": "id", //字段名
        "oldFieldName": "idold", //修改前字段名
        "fieldType": "int" //字段类型      
        "comment": "主键", //字段备注
        "defaultValue": "1", //默认值
        "isNotNull": true, //是否为空
		"isAutoIncrement": true, //是否自增
		"isOnlyPrimaryKey": false, //是否是唯一主键
		"primaryKeyName": "pk_a_test", //主键名
	}, {
		"isNotNull": true,
		"isAutoIncrement": false,
		"fieldName": "name",
		"oldFieldName": "nameOld",
		"comment": "名称",
		"fieldType": "varchar"
	}]
}
  • 更新字段
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
    "tableName": "a_test", //表名
	"fields": [{ //字段集合
        "fieldName": "id", //字段名
        "oldFieldName": "idold", //修改前字段名
        "fieldType": "int" //字段类型      
        "comment": "主键", //字段备注
        "defaultValue": "1", //默认值
        "isNotNull": true, //是否为空
		"isAutoIncrement": true, //是否自增
		"isOnlyPrimaryKey": false, //是否是唯一主键
		"primaryKeyName": "pk_a_test", //主键名
	}, {
		"isNotNull": true,
		"isAutoIncrement": false,
		"fieldName": "name",
		"oldFieldName": "nameold",
		"comment": "名称",
		"fieldType": "varchar"
	}]
}
  • 删除字段
    • 作用场景:同步到数据库、从数据库同步
    • 可用变量:
{
  "tableName": "a_test", //表名
  "fieldCodes": ["name"] //删除字段编码集合
}
  • 插入数据
    • 作用场景:同步到数据库、从数据库同步、导出数据脚本
    • 可用变量:
{
  "tableName": "a_test", //表名
  "columns": ["id","name"] //字段编码集合
  "values": [{"id": 1, "name": "name"}, {"id": 2, "name": "name2"}], //插入数据
  "fieldFormatMap": [{"time1": "SYYYY-MM-DD HH24:MI:SS.FF9"}], //日期字段及对应日期格式映射
  "colFieldTypeMap": [{"time1": "datetime"}], //字段类型map
  "clobCloumn": ["clob_column1"] //clob类型字段集合
}