一、 数据设计方案
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 | 货币金额 | 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 | 货币金额 | 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<string> | 包含同类型元素的数组,索引从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} |
网友评论