
# 支持的数据类型
目前大数据领域，主流文件格式为ORC、PARQUET。用户利用HIVE将数据导出存储为ORC、PARQUET文件格式，使用DWS通过只读外表对ORC、PARQUET文件内的数据进行查询分析，因此，需要在ORC、PARQUET文件格式支持的数据类型与DWS自身支持数据类型间进行匹配，匹配状况如[表1]所示。同理，DWS可通过只写外表将数据导出存储为ORC、PARQUET文件格式，使用HIVE读取ORC、PARQUET文件内容，相互之间也需要类型匹配，匹配状况如[表2]所示：
 表1ORC、PARQUET格式的只读外表与HIVE数据类型匹配关系 
| **类型名称**   | **DWS外表支持类型**               | **HIVE建表类型**              |
|:---|:---|:---|
| 1字节整数      | TINYINT（不推荐）                | TINYINT                   |
| 1字节整数      | SMALLINT（推荐）                | TINYINT                   |
| 2字节整数      | SMALLINT                    | SMALLINT                  |
| 4字节整数      | INTEGER                     | INT                       |
| 8字节整数      | BIGINT                      | BIGINT                    |
| 单精度浮点数     | FLOAT4 (REAL)               | FLOAT                     |
| 双精度浮点型     | FLOAT8(DOUBLE PRECISION)    | DOUBLE                    |
| 科学数据类型     | DECIMAL\[p (,s)\] 最大支持38位精度 | DECIMAL最大支持38位（HIVE 0.11） |
| 日期类型       | DATE                        | DATE                      |
| 时间类型       | TIMESTAMP                   | TIMESTAMP                 |
| BOOLEAN类型  | BOOLEAN                     | BOOLEAN                   |
| Char类型     | CHAR(n)                     | CHAR (n)                  |
| VarChar类型  | VARCHAR(n)                  | VARCHAR (n)               |
| 字符串（文本大对象） | TEXT(CLOB)                  | STRING                    |
| 二进制类型      | BYTEA                       | BINARY                    |
   
![](https://support.huaweicloud.com/migration-dws/public_sys-resources/note_3.0-zh-cn.png)
二进制类型仅9.1.0.100及以上集群版本支持。
 表2ORC、PARQUET格式的只写外表与HIVE数据类型匹配关系 
| **类型名称**                                                                                                                                        | **DWS内表支持类型（数据源表）**                                                                     | **DWS只写外表对应的类型**                       | **HIVE建表类型**                                       |
|:---|:---|:---|:---|
| 1字节整数                                                                                                                                           | TINYINT                                                                                 | TINYINT（不推荐）                           | SMALLINT                                           |
| 1字节整数                                                                                                                                           | TINYINT                                                                                 | SMALLINT（推荐）                           | SMALLINT                                           |
| 2字节整数                                                                                                                                           | SMALLINT                                                                                | SMALLINT                               | SMALLINT                                           |
| 4字节整数                                                                                                                                           | INTEGER、BINARY_INTEGER                                                                  | INTEGER                                | INT                                                |
| 8字节整数                                                                                                                                           | BIGINT                                                                                  | BIGINT                                 | BIGINT                                             |
| 单精度浮点数                                                                                                                                          | FLOAT4 、REAL                                                                            | FLOAT4、REAL                            | FLOAT                                              |
| 双精度浮点型                                                                                                                                          | DOUBLE PRECISION、FLOAT8、BINARY_DOUBLE                                                   | DOUBLE PRECISION、FLOAT8、BINARY_DOUBLE  | DOUBLE                                             |
| 科学数据类型                                                                                                                                          | DECIMAL、NUMERIC                                                                         | DECIMAL\[p (,s)\] 最大支持38位精度            | precision \<=38时，DECIMAL, precision \> 38时， STRING |
| 日期类型                                                                                                                                            | DATE                                                                                    | TIMESTAMP\[(p)\] \[WITHOUT TIME ZONE\] | TIMESTAMP                                          |
|   时间类型                                                                                                                              | TIME \[(p)\] \[WITHOUT TIME ZONE\]、TIME \[(p)\] \[WITH TIME ZONE\]                      | TEXT                                   | STRING                                             |
|   时间类型                                                                                                                              | TIMESTAMP\[(p)\] \[WITHOUT TIME ZONE\]、TIMESTAMP\[(p)\]\[WITH TIME ZONE\]、SMALLDATETIME | TIMESTAMP\[(p)\] \[WITHOUT TIME ZONE\] | TIMESTAMP                                          |
|   时间类型                                                                                                                              | INTERVAL DAY (l) TO SECOND (p)、INTERVAL \[FIELDS\] \[ (p) \]                            | VARCHAR(n)                             | VARCHAR(n)                                         |
| BOOLEAN类型                                                                                                                                       | BOOLEAN                                                                                 | BOOLEAN                                | BOOLEAN                                            |
| Char类型                                                                                                                                          | CHAR(n)、CHARACTER(n)、NCHAR(n)                                                           | CHAR(n)、CHARACTER(n)、NCHAR(n)          | n\<=255时，CHAR(n), n\>255 时，STRING                  |
| VarChar类型  | VARCHAR(n)、CHARACTER VARYING(n)、VARCHAR2(n)、                                            | VARCHAR(n)                             | n\<=65535时，VARCHAR (n)，n\>65535时，STRING            |
| VarChar类型  | NVARCHAR2(n)                                                                            | TEXT                                   | STRING                                             |
| 字符串（文本大对象）                                                                                                                                      | TEXT、CLOB                                                                               | TEXT、CLOB                              | STRING                                             |
| 二进制类型                                                                                                                                           | BYTEA                                                                                   | BYTEA                                  | BINARY                                             |
| 货币类型                                                                                                                                            | MONEY                                                                                   | NUMERIC                                | BIGINT                                             |
   
![](https://support.huaweicloud.com/migration-dws/public_sys-resources/notice_3.0-zh-cn.png)
1. DWS外表支持NULL定义，HIVE数据表支持并采用相对应的NULL定义。
2. HIVE数据表中的TINYINT的取值范围为\[-128,127\]，而 DWS 的TINYINT的取值范围为\[0,255\]，因此，HIVE表中的TINYINT类型在建DWS只读外表时建议采用SMALLINT类型，如果使用TINYINT有可能存在读取值与实际值不一致的情况。同样，DWS的TINYINT类型在导出时，只写外表和HIVE的建表类型也建议采用SMALLINT类型。
3. DWS外表的日期和时间类型，不支持时区定义，HIVE不支持时区定义。
4. HIVE中DATE类型只有日期，没有时间，DWS的DATE类型包含日期和时间。
5. DWS支持ORC的压缩格式，包括ZLIB、SNAPPY、LZ4及NONE压缩方式。其中FLOAT4格式本身存在不精准问题，求和等操作在不同环境下可能产生不同的结果，在高精度要求场景下建议使用DECIMAL类型代替。
6. 兼容Teradata数据库模式下，外表不支持DATE类型。
7. 二进制类型仅9.1.0.100及以上集群版本支持。
 
