# dataTypes - 字段类型配置
定义此数据库支持的所有支持的字段类型。
这里定义的字段类型,需要将当前数据库支持的字段类型描述清楚,并告诉SuccBI不同的字段在SuccBI中是什么数据类型,当跨库复制数据时,系统也许兼容识别javaJDBC的字段类型定义,这样在跨库迁移数据时能更准确的还原字段数据类型。
"dataTypes": {
"TINYINT": {
"type": "...",
"dataType": "...",
"javaTypes": ["..."],
"matchLen": "...",
"storageBytes": "...",
"preffered": true|false,
"storeCharacter": true|false
}
}
# 配置项
# type
定义数据库的字段类型,一般为数据库实际支持的数据类型。
- 字段类型可以是带有参数的字符串,如
VARCHAR(?)
、VARCHAR(?) BINARY
、DECIMAL(?,?)
。 - 数据库的字段类型最好参考官方文档进行配置,如MySql支持的数据类型 (opens new window)。
# dataType
定义该字段类型在SuccBI中是什么数据类型,通常用字母表示。
数据类型如下所示:
C
:字符型N
:浮点型I
:整型D
:日期型T
:时间型P
:时间戳型M
:Clob类型X
:Blob类型J
:Json类型U
:其他类型
# javaTypes
定义java JDBC规范中的数据类型。
通常要与数据库实际字段类型尽量匹配,可以定义多个,用,
分隔。当其他数据库迁移数据到此库时,会根据这里的数据类型在当前数据库新建字段。
数据类型如下所示:
- 整型:
TINYINT
、SMALLINT
、INTEGER
、BIGINT
- 浮点型:
FLOAT
、REAL
、DOUBLE
、DECIMAL
、NUMERIC
- 字符型:
BIT
、NUMERIC
、CHAR
、VARCHAR
、NCHAR
、NVARCHAR
、BOOLEAN
- 日期型:
DATE
- 时间型:
TIME
、TIME_WITH_TIMEZONE
、TIMESTAMP_WITH_TIMEZONE
- 时间戳型:
TIMESTAMP
- Clob类型:
CLOB
、NCLOB
、LONGVARCHAR
、LONGNVARCHAR
- Blob类型:
BINARY
、VARBINARY
、LONGVARBINARY
、BLOB
- Json类型:
SQLXML
- 其他类型:
NULL
、OTHER
、JAVA_OBJECT
、DISTINCT
、STRUCT
、ARRAY
、REF
、DATALINK
、ROWID
、REF_CURSOR
# matchLen
定义整型字段的长度匹配范围,当整数长度与字段类型中matchLen
定义的范围相匹配时,会选择此字段类型创建字段,此属性仅对整型字段有效。
示例:
"TINYINT": {
"type": "TINYINT",
"dataType": "I",
"matchLen": "1~2",
"storageBytes": 1,
"javaTypes": ["TINYINT"]
}
提示
用户修改整型字段长度后,若修改的长度超过了原来字段类型的最大长度,会重新根据matchLen
定义的范围匹配合适的字段类型。
# storageBytes
定义字段类型实际存储的字节数,一般为数据库字段类型的字节数。
# preffered
数据库创建字段时是否优先选择创建此类型的字段,默认为false。
数据库在创建字段时,会优先考虑定义了preffered=true
的字段。对于整型字段,若定义了matchLen
属性,先根据matchLen属性进行匹配,匹配不到就会使用定义了preffered=true
的字段类型。
# storeCharacter
说明此字段类型是否为字符存储,true表示字符存储,false表示byte存储,此属性对字符型字段有效。
提示
SuccBI通常会优先使用字符存储的字段,在进行跨库迁移时,从字符存储的字段迁移到目标库时也尽量使用字符存储的字段。
# alterTypes
定义当前字段类型可以修改为哪些其他数据类型,默认为空。当此属性为空或者未定义时,修改字段类型遵循以下规则
- 当表中存在数据时,blob、clob的字段类型总是不能修改为其他类型,其他类型也不能修改为blob或clob类型。
- 一般默认除blob、clob字段以外的字段类型可以互相修改。
- 对于不能修改的字段类型,若确实需要修改,系统将新建一个字段并尽量迁移老字段的数据过去。