一、 数据设计方案
1.1 数据表名
- 大写(TABLE)
- 小写(table)
- 大小写混合(TABle)
- 带特殊字符(.table,/table,_table,'table,"table,`table)
- 关键字(datatime,string..)
- 不同数据库支持的表名最大长度
1.2 字段名
- 大写(COLUMN)
- 小写(column)
- 大小写混合(COLUmn)
- 带特殊字符(.column,/column,_column)
- 中文数字混合(列名1)
- 不同数据库支持的列名最大长度
1.3 空字符
- 数据表为空和数据表内某个字段的值为空
1.4 数据类型
- 创建对应数据表的所有字段类型
二、 各数据源对应的字段类型
2.1 Oracle数据库
| 字段类型 | 字段说明 | 长度 | 示例 |
|---|---|---|---|
| NUMBER | 变长数据类型 | 22个字节 | --- |
| FLOAT | 浮点数类型 | NUMBER(38),双精度 | --- |
| BINARY_DOUBLE | 现有的NUMBER类型的补充,oracle 10g以上的版本才能用 | 9个字节 | 12.3400002 |
| BINARY_FLOAT | 现有的NUMBER类型的补充oracle 10g以上的版本才能用 | 5个字节 | 34.560000000000002 |
| DATE | 日期 | --- | 2021-04-21 14:36:11 |
| TIMESTAMP | 日期存储小数秒 | --- | 2021-04-21 14:36:11.000000 |
| TIMESTAMP WITH TIME ZONE | 日期存储时区 | 13字节 | 2021-04-21 14:36:11.000000000 +08:00 |
| TIMESTAMP WITH LOCAL TIME ZONE | 该类型会转换成数据的时区来保存数据 | 7-11字节 | 2021-04-21 14:36:11.000000 |
| INTERVAL YEAR TO MONTH | 间隔使用年份和月份 | --- | +011-00 |
| INTERVAL DAY TO SECOND | 使用包括小数秒在内的天,小时,分钟和秒存储间隔 | --- | +012 10:23:01.123457 |
| LONG | 超长字符串 | 最大长度2G | --- |
| BLOB | 二进制数据 | 最大长度4G | --- |
| CLOB | 字符数据 | 最大长度4G | --- |
| NCLOB | 根据字符集而定的字符数据 | 最大长度4G | --- |
| BFILE | 存放在数据库外的二进制数据 | 最大长度4G | --- |
| CHAR | 固定长度字符串 | 最大长度2000字节 | --- |
| VARCHAR | 可变长度字符串 | 最大长度4000字节 | --- |
2.2 SQLServer数据库
| 字段类型 | 字段说明 | 长度 | 示例 |
|---|---|---|---|
| char | 非Unincode编码,长度是固定的 | 最大长度8000字节 | --- |
| varchar | 非Unincode编码,长度是可变 | 最大长度8000字节 | --- |
| sql_variant | 变长的数据类型,包含两部分信息:基础类型和Value,可以存储所有的SQLServer数据类型的数据。 | -- | --- |
| date | 日期 | --- | 2032-03-23 |
| time | 时间 | --- | 09:33:32.0000000 |
| smalldatetime | 时间范围 | 4个字节 | 2021-04-08 12:08:00 |
| float | 近似数值型 | 4/8字节,依赖与float(n)的取值 | -1.79E+308至1.79E+308 |
| money | 记录金额范围 | 8个字节 | -92233720368577.5808至92233720368577.5807 |
| numeric | 精确数值型 | --- | 333 |
| decimal | 精确数值类型 | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 |
| tinyint | 最小的整数类型 | 1个字节 | 0至^8-1 |
| smallint | 正负数 | 2个字节 | -215至215-1 |
| int | 正负数|4个字节 | -231至231-1 | |
| bit | 常用于布尔类型,0/1代表true/false | --- | 1/0 |
| image | 可变长的二进制字符串 | 最大2G | 文件 |
2.3 MySQL数据库
| 字段类型 | 字段说明 | 长度 | 示例 |
|---|---|---|---|
| tinyint | 小整数值 | 1字节 | (-128,127)、(0,255) |
| smallint | 大整数值 | 2字节 | (-32768,32767)、(0,65535) |
| mediumint | 大整数值 | 3字节 | (-8388608,8388607)、(0,16777215) |
| int | 大整数值 | 4字节 | (-2147483648,2147483647)、(0,4294967295) |
| bigint | 极大整数值 | 8字节 | (-9,223,372,036,854,775,808,9,223,372,036,854,775,807) 、(0,18446744073709551615) |
| float | 单精度浮点数值 | 4字节 | 0,(1.175 494 351 E-38,3.402 823 466 E+38) |
| double | 双精度浮点数值 | 8字节 | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
| decimal | 小数值 | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 |
| date | 日期值 | 3字节 | 2009-01-26 |
| time | 时间值或持续时间 | 3字节 | 838:59:59 |
| datetime | 混合日期和时间值 | 8字节 | 2009-01-26 00:00:00 |
| timestamp | 混合日期和时间值,时间戳 | 4字节 | 2009-01-26 00:00:00 |
| year | 年份值 | 1字节 | 2009 |
| char | 定长字符串 | 0-255字节 | --- |
| varchar | 变长字符串 | 0-65535字节 | --- |
| blob | 二进制形式的长文本数据 | 0-65535字节 | --- |
2.4 PostgreSQL数据库
| 字段类型 | 字段说明 | 长度 | 示例 |
|---|---|---|---|
| int2 | smallint扩展,小范围整数 | 2 字节 | -32768 到 +32767 |
| int4 | integer扩展,整数的典型选择 | 4字节 | -2147483648 到 +2147483647 |
| int8 | bigint扩展,大范围整数 | 8字节 | -9223372036854775808 到 +9223372036854775807 |
| numeric | 用户指定的精度,精确 | 可变长 | 小数点前 131072 位;小数点后 16383 位 |
| float4 | real-可变精度,不精确 | 4字节 | 6 位十进制数字精度 |
| float8 | double precision可变精度,不精确 | 8字节 | 15 位十进制数字精度 |
| money(不建议使用,BI不支持) | 货币金额 | 8字节 | -92233720368547758.08 到 +92233720368547758.07 |
| bool | 布尔类型 | -- | f/t |
| char | 定长,不足补空白 | -- | -- |
| varchar | 变长,有长度限制 | --- | -- |
| date | 只用于日期 | 4字节 | 2021-08-03 |
| inet | IPv4 或 IPv6 主机和网络 | 7 或 19 字节 | ::ffff:10.4.3.2 |
| text | 变长,无长度限制 | -- | -- |
| timestamptz | 日期和时间(有时区) | 8字节 | 2021-08-03 07:27:08+00 |
| timestamp | 日期和时间(无时区) | 8字节 | 2021-08-03 15:27:06 |
| time | 只用于一日内时间 | 8字节 | 17:28:24 |
| timetz | 只用于一日内时间,带时区 | 12字节 | 12:28:34+08 |
| tsvector | 无重复值的 lexemes 排序列表 | -- | '[1,2,3]' |
| tsquery | 存储用于检索的词汇 | -- | '("fuzzy dice",42,1.99)' |
| uuid | 通用唯一标识符(UUID) | 128字节 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 |
| point | 平面中的点 | 16字节 | (2,6) |
| line | (无穷)直线(未完全实现) | 32字节 | {1,-1,1} |
| lseg | (有限)线段 | 32字节 | [(1,1),(2,2)] |
| box | 矩形 | 32字节 | (2,2),(1,1) |
| path | 闭合路径(与多边形类似) | 16+16n字节 | ((1,1),(2,2),(3,3),(4,4)) |
| polygon | 多边形(与闭合路径相似) | 40+16n字节 | ((1,1),(2,2),(3,3),(4,4)) |
| circle | 圆 | 24字节 | <(1,1),5> |
| json | json 数据类型 | -- | {"f1":1,"f2":"foo"} |
| jsonb | json 数据类型 | -- | [[1, 5], [99, 100]] |
| varbit | 位串类型,一串 1 和 0 的字符串 | -- | 00100010110011100111011010110011110 |
2.5 GreenPlum数据库
| 字段类型 | 字段说明 | 长度 | 示例 |
|---|---|---|---|
| int2 | smallint扩展,小范围整数 | 2 字节 | -32768 到 +32767 |
| int4 | integer扩展,整数的典型选择 | 4字节 | -2147483648 到 +2147483647 |
| int8 | bigint扩展,大范围整数 | 8字节 | -9223372036854775808 到 +9223372036854775807 |
| numeric | 用户指定的精度,精确 | 可变长 | 小数点前 131072 位;小数点后 16383 位 |
| float4 | real-可变精度,不精确 | 4字节 | 6 位十进制数字精度 |
| float8 | double precision可变精度,不精确 | 8字节 | 15 位十进制数字精度 |
| money(不建议使用,BI不支持) | 货币金额 | 8字节 | -92233720368547758.08 到 +92233720368547758.07 |
| bool | 布尔类型 | -- | f/t |
| char | 定长,不足补空白 | -- | -- |
| varchar | 变长,有长度限制 | --- | -- |
| date | 只用于日期 | 4字节 | 2021-08-03 |
| inet | IPv4 或 IPv6 主机和网络 | 7 或 19 字节 | ::ffff:10.4.3.2 |
| text | 变长,无长度限制 | -- | -- |
| timestamptz | 日期和时间(有时区) | 8字节 | 2021-08-03 07:27:08+00 |
| timestamp | 日期和时间(无时区) | 8字节 | 2021-08-03 15:27:06 |
| time | 只用于一日内时间 | 8字节 | 17:28:24 |
| timetz | 只用于一日内时间,带时区 | 12字节 | 12:28:34+08 |
| tsvector | 无重复值的 lexemes 排序列表 | -- | '[1,2,3]' |
| tsquery | 存储用于检索的词汇 | -- | '("fuzzy dice",42,1.99)' |
| uuid | 通用唯一标识符(UUID) | 128字节 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 |
| point | 平面中的点 | 16字节 | (2,6) |
| line | (无穷)直线(未完全实现) | 32字节 | {1,-1,1} |
| lseg | (有限)线段 | 32字节 | [(1,1),(2,2)] |
| box | 矩形 | 32字节 | (2,2),(1,1) |
| path | 闭合路径(与多边形类似) | 16+16n字节 | ((1,1),(2,2),(3,3),(4,4)) |
| polygon | 多边形(与闭合路径相似) | 40+16n字节 | ((1,1),(2,2),(3,3),(4,4)) |
| circle | 圆 | 24字节 | <(1,1),5> |
| json | json 数据类型 | -- | {"f1":1,"f2":"foo"} |
| jsonb | json 数据类型 | -- | [[1, 5], [99, 100]] |
| varbit | 位串类型,一串 1 和 0 的字符串 | -- | 00100010110011100111011010110011110 |
2.6 Impala数据库
| 字段类型 | 字段说明 | 长度 | 示例 |
|---|---|---|---|
| int | 有符号整型 | 4字节 | 333 |
| tinyint | 有符号整型 | 1字节 | 333 |
| smallint | 有符号整型 | 2字节 | 333 |
| bigint | 有符号整型 | 8字节 | 333 |
| float | 有符号单精度浮点数 | 4字节 | 33.93932322 |
| double | 有符号双精度浮点数 | 8字节 | 333 |
| decimal | 有符号双精度浮点数 | -- | 333 |
| timestamp | 时间戳 | -- | 2018-09-21 10:25:12.123 |
| string | 字符串 | -- | xxx |
| char | 长度固定字符串 | 255 | xxx |
| varchar | 长度不定字符串 | 1-65535 | xxx |
| boolean | 布尔类型 | -- | true/false |
| binary | 字节序列 | -- | -- |
2.7 Hive数据库
| 字段类型 | 字段说明 | 长度 | 示例 |
|---|---|---|---|
| int | 有符号整型 | 4字节 | 333 |
| tinyint | 有符号整型 | 1字节 | 333 |
| smallint | 有符号整型 | 2字节 | 333 |
| bigint | 有符号整型 | 8字节 | 333 |
| float | 有符号单精度浮点数 | 4字节 | 33.93932322 |
| double | 有符号双精度浮点数 | 8字节 | 333 |
| decimal | 有符号双精度浮点数 | -- | 333 |
| timestamp | 时间戳 | -- | 2018-09-21 10:25:12.123 |
| date | 日期 | -- | 2013-09-21 |
| string | 字符串 | -- | xxx |
| char | 长度固定字符串 | 255 | xxx |
| varchar | 长度不定字符串 | 1-65535 | xxx |
| boolean | 布尔类型 | -- | true/false |
| binary | 字节序列 | -- | -- |
| array |
包含同类型元素的数组,索引从0开始 ARRAY<data_type> | -- | ['a'] |
| map<string,string> | 字典 MAP<primitive_type, data_type> | -- | {'b':null} |
| struct<t_struct_key:string> | 结构体 STRUCT<> | -- | {"t_struct_key": 'c'} |
| map<string,double> | 字典 MAP<primitive_type, data_type> | -- | {m['name']='steven':null} |
| struct<t_struct_int_key:int> | 结构体 STRUCT<> | -- | {"t_struct_int_key":null} |