---+---+---+---+---+---+---(0 rows)
----结束
删除数据库及其所属的用户
如果您执行了(可选)新建用户及数据库并授予外表权限中的步骤,请参照以下步骤 删除数据库及其所属的用户。
步骤1 删除自定义数据库。
通过GaussDB(DWS)提供的数据库客户端连接默认数据库gaussdb。
如果已经登录了gsql客户端,可以直接执行如下命令进行切换:
先切换到默认数据库:
\c gaussdb
根据界面提示输入密码。
执行以下命令,删除自定义数据库:
DROP DATABASE mydatabase;
返回以下信息表示删除成功:
DROP DATABASE
步骤2 使用管理员用户,删除本示例中创建的普通用户。
使用数据库管理员用户通过GaussDB(DWS)提供的数据库客户端连接数据库。
如果已经登录了gsgl客户端,可以直接执行如下命令进行切换:
\c gaussdb dbadmin
执行以下命令回收创建外部服务器的权限:
REVOKE ALL ON FOREIGN DATA WRAPPER dfs_fdw FROM dbuser;
其中FOREIGN DATA WRAPPER的名字只能是dfs_fdw,dbuser为创建SERVER的用户 名。
执行以下命令删除用户:
DROP USER dbuser;
可使用\du命令查询用户,确认用户是否已经删除。
----结束
3.2.3.6 支持的数据类型
目前大数据领域,主流文件格式为ORC。GaussDB(DWS)主要支持ORC文件格式。用 户利用HIVE将数据导出存储为ORC文件格式,使用GaussDB(DWS)通过只读外表对 ORC文件内的数据进行查询分析,因此,需要在ORC文件格式支持的数据类型与 GaussDB(DWS)自身支持数据类型间进行匹配,匹配状况如表1 ORC格式的只读外表 与HIVE数据类型匹配关系所示。同理,GaussDB(DWS)可通过只写外表将数据导出存 储为ORC文件格式,使用HIVE读取ORC文件内容,相互之间也需要类型匹配,匹配状 况如表 ORC格式的只写外表与HIVE数据类型匹配关系所示:
表3-5 ORC 格式的只读外表与 HIVE 数据类型匹配关系 类型名称 GaussDB(DWS)外表支持类
型 HIVE建表类型
1字节整数 TINYINT(不推荐) TINYINT 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)
类型名称 GaussDB(DWS)外表支持类
型 HIVE建表类型
字符串(文本大对
象) TEXT(CLOB) STRING
表3-6 ORC 格式的只写外表与 HIVE 数据类型匹配关系
1字节整数 TINYINT TINYINT(不推荐) SMALLINT SMALLINT(推荐) SMALLINT 2字节整数 SMALLINT SMALLINT SMALLINT 4字节整数 INTEGER、
BINARY_INTEGE R
INTEGER INT
8字节整数 BIGINT BIGINT BIGINT 单精度浮
点数
FLOAT4 、REAL FLOAT4、REAL FLOAT
双精度浮
NUMERIC DECIMAL[p (,s)] 最
大支持38位精度 precision <=38时,
DECIMAL, precision > 38 时, STRING
日期类型 DATE TIMESTAMP[(p)]
[WITHOUT TIME
类型名称 GaussDB(DWS) 内表支持类型
(数据源表)
GaussDB(DWS)只
写外表对应的类型 HIVE建表类型
TIMESTAMP[(p) ] [WITHOUT TIME ZONE]、
TIMESTAMP[(p) ][WITH TIME ZONE]、
SMALLDATETIM E
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
NVARCHAR2(n) TEXT STRING 字符串(文
本大对象) TEXT、CLOB TEXT、CLOB STRING 货币类型 MONEY NUMERIC BIGINT
须知
1. GaussDB(DWS)外表支持NULL定义,HIVE数据表支持并采用相对应的NULL定义。
2. HIVE数据表中的TINYINT的取值范围为[-128,127],而 GaussDB(DWS) 的TINYINT 的取值范围为[0,255], 因此,HIVE表中的TINYINT类型在建GaussDB(DWS)只读外 表时最好采用SMALLINT类型,如果使用TINYINT有可能存在读取值与实际值不一 致的情况。同样,GaussDB(DWS)的TINYINT类型在导出时,只写外表和HIVE的建 表类型也最好采用SMALLINT类型。
3. GaussDB(DWS)外表的日期和时间类型,不支持时区定义,HIVE不支持时区定义。
4. HIVE中date类型只有日期,没有时间,GaussDB(DWS)的date类型包含日期和时 间。
5. GaussDB(DWS)支持ORC的压缩格式,包括ZLIB,SNAPPY,LZ4及NONE压缩方 式。
6. 其中FLOAT4格式本身存在不精准问题,求和等操作在不同环境下可能产生不同的 结果,在高精度要求场景下建议使用DECIMAL类型代替。
7. 兼容Teradata数据库模式下,外表不支持DATE类型。
3.3 使用 GDS 从远端服务器导入数据
3.3.1 关于 GDS 并行导入
INSERT和COPY方式执行数据导入时,是一个串行执行的过程,导入性能低,因此适 用于小数据量的导入。对于大数据量的导入,GaussDB(DWS)支持使用GDS工具通过 外表并行导入数据到集群。
概述
并行导入将存储在服务器普通文件系统中的数据导入到GaussDB(DWS)数据库中。暂 时不支持将存储在HDFS文件系统上的数据导入GaussDB(DWS)。
并行导入功能通过外表设置的导入策略、导入数据格式等信息来识别数据源文件,利 用多DN并行的方式,将数据从数据源文件导入到数据库中,从而提高整体导入性能。
如图3-4所示:
● CN只负责任务的规划及下发,把数据导入的工作交给了DN,释放了CN的资源,
使其有能力处理其他外部请求。
● 所有DN都参与数据导入,这样可以充分利用各设备的计算能力及网络带宽,提升 导入效率。
外表灵活的OPTION设置,有利于在数据入库前对数据做预处理,例如非法字符替换、
容错处理等。
图3-4 数据并行导入示意图
上图中所涉及的相关概念说明如下:
● CN(Coordinator):GaussDB(DWS)协调节点。在导入场景下,接收到应用或 客户端的导入SQL指令后,负责任务的规划及下发到DN。
● DN(Datanode):GaussDB(DWS)数据节点。接收CN下发的导入任务,将数据 源文件中的数据通过外表写入数据库目标表中。
● 数据源文件:存有数据的文件。文件中保存的是待导入数据库的数据。
● 数据服务器:数据源文件所在的服务器称为数据服务器。基于安全考虑,建议数 据服务器和GaussDB(DWS)集群处于同一内网。
● 外表Foreign Table:用于识别数据源文件的位置、文件格式、存放位置、编码格 式、数据间的分隔符等信息。是关联数据文件与数据库实表(目标表)的对象。
● 目标表:数据库中的实表。数据源文件中的数据最终导入到这些表中存储,包括 行存表和列存表。