跳至主要內容

数据库方言基础配置

2025年7月7日大约 3 分钟

数据库方言基础配置

本文档详细介绍hetu.toml中的基础配置部分,这是所有数据库方言配置的核心。

基础配置文件结构

hetu.toml作为基础配置文件,定义了以下几个主要部分:

  1. 数据库定义
  2. 数据库分类
  3. 安装配置
  4. 继承关系
  5. 默认数据类型定义
  6. 日期格式化
  7. 默认函数
  8. 默认SQL模板

1. 数据库定义 [database]

[database]
mysql = { name = 'mysql', description = "MySql数据库" }
oracle = { name = 'oracle', description = "Oracle数据库" }
postgresql = { name = 'postgresql', description = "pg数据库" }
# 其他数据库...

提示

在[database]部分中,每个数据库的配置键名(如mysql、oracle)必须与对应的TOML文件名(如mysql.toml、oracle.toml)保持一致(不含.toml后缀)。这是系统识别和加载正确方言配置文件的关键。

例如:

  • 数据库配置文件:mysql.toml
  • hetu.toml中的配置:mysql = { name = 'mysql', description = "MySql数据库" }

不正确的配置示例:

  • ❌ mysql_db = { name = 'mysql', description = "MySql数据库" } (键名与文件名不一致)

2. 数据库分类 [categories]

[categories]
relational = { name = '关系型数据库' }
domestic = { name = '国产数据库' }
bigData = { name = '大数据数据库' }

[categories.group]
relational = ['mysql', 'kingbasees', 'sqlite', 'postgresql', 'oracle', 'mssql', 'dm', '...']
domestic = ['kingbasees', 'dm', 'gbase8s', 'postgresql', 'oscar', 'highGo']
bigData = ['Apache Druid', 'clickhouse', 'druid', 'presto', 'kylin']

这部分配置用于对数据库进行分类,方便在界面上展示和筛选。

3. 安装配置 [install]

[install]
# 是否允许安装产品数据库
mysql = true
kingbasees = true
dm = true
# 其他数据库...

此配置决定了在系统安装界面上哪些数据库可以被选择作为系统数据库。

4. 继承关系 [extend]

[extend]
openGauss = { type = "postgresql" }
highGo = { type = "postgresql" }
kingbaseAnalyticsDB = { type = "postgresql" }

继承关系配置允许一个数据库方言继承另一个数据库方言的配置,这样就不需要重复配置相似的部分。

5. 默认数据类型定义 [type.XXX]

hetu.toml中定义了默认的数据类型映射,所有数据库可以共享这些定义:

[type.VARCHAR]
id = 12
expr = "VARCHAR({length})"
length = { min = 0, max = 21844 }
description = "字符串类型,最大长度20000"

[type.LONGVARCHAR]
id = -1
expr = "LONGVARCHAR"
length = { min = 0, max = 100000 }
description = "字符串类型,最大长度100000"

[type.INTEGER]
id = 4
expr = "INTEGER"
length = { min = 0, max = 2147483647 }
description = "整形"

[type.BIGINT]
id = -5
expr = "BIGINT"
description = "长整型"

[type.DOUBLE]
id = 8
expr = "DOUBLE"
description = "双精度浮点型"

[type.DATE]
id = 91
expr = "DATE"
description = "日期类型"

[type.TIMESTAMP]
id = 93
expr = "TIMESTAMP"
description = "时间戳类型"

6. 日期格式化 [format]

hetu.toml中定义了默认的日期格式化模式:

[format]
YY = { expr = "%Y", description = "四位年份" }
yy = { expr = "%y", description = "两位年份" }
mm = { expr = "%m", description = "月份" }
Q = { expr = "%q", description = "季度" }
U = { expr = "%U", description = "周" }
d = { expr = "%d", description = "两位日期" }
H = { expr = "%H", description = "24小时制小时" }
h = { expr = "%h", description = "12小时制小时" }
i = { expr = "%i", description = "分钟" }
s = { expr = "%s", description = "秒" }

7. 默认函数 [function]

hetu.toml中定义了默认的数据库函数实现:

[function]
MEDIAN = "MEDIAN({expr})"
# 其他默认函数...

8. 默认SQL模板 [template]

hetu.toml中还定义了默认的SQL模板:

[template]
# 不能为空表达式
notNullExpr = "NOT NULL"
# 默认值表达式
defaultExpr = "DEFAULT"
# 是否添加注释
addComment = true
# 建表语句
createTable = """
create(columns, tableName, pk, tableComment) ::= <<
CREATE TABLE {tableName} (
{columns:{c |{c.columnName} {c.dataType}{if(c.defaultValue)} {c.defaultExpr} {c.defaultValue}{endif}{if(!c.nullable)} {c.nullableExpr}{endif}}; separator=",
"},
PRIMARY KEY ({pk})
);
>>
"""
上次编辑于: 2025/7/7 17:37:43
贡献者: zhangshuaic