一、 数据设计方案
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字节 |
|
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 数据类型 |
-- |
|
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字节 |
|
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 数据类型 |
-- |
|
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> |
-- |
|
struct<t_struct_key:string> |
结构体 STRUCT<> |
-- |
|
map<string,double> |
字典 MAP<primitive_type, data_type> |
-- |
|
struct<t_struct_int_key:int> |
结构体 STRUCT<> |
-- |
|