一、 數據設計方案
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} |