打开网易新闻 查看精彩图片

外部表是一个数据存储在数据库外部的OushuDB数据库表,允许OushuDB对存储在数据库之外的数据源中的数据进行访问,就像数据存储在常规数据库表中一样。外部表分可读和可写,数据可以从外部表读取或写入。它和常规数据库表的用法一样, 可以执行INSERT、SELECT、JOIN等操作。外部表通常用于快速并行加载和卸载数据库数据。

外部web表允许OushuDB数据库处理动态数据源,它可以在查询运行时进行更改,因此数据不可重新记录。且外部web表提供对HTTP服务器或操作系统进程提供的数据的访问。

接下来将通过以下目录章节详细介绍外部表:

外部表定义

创建可读外部表或创建可读外部WEB表是在OushuDB中创建一个新的可读外部表定义。可读外部表通常用于快速并行数据加载。一旦定义了外部表,就可以使用SQL命令直接(并行)查询其数据。例如,可以对外部表数据进行查询、关联或排序。也可以为外部表创建视图。不允许对可读外部表执行DML操作(UPDATE、INSERT、DELETE或TRUNCATE)。

创建可写外部表或创建可写外部WEB表是在OushuDB中创建一个新的可写外部表定义。可写外部表通常用于将数据从数据库卸载到一组文件或命名管道中。可写外部web表也可用于将数据输出到可执行程序。一旦定义了可写外部表,就可以从数据库表中选择数据并将其插入可写外部表中。可写外部表允许INSERT–不允许SELECT、UPDATE、DELETE。目前只有hdfs协议和hive协议支持TRUNCATE。

在OushuDB中,Web外部表可通过两种方式访问动态数据源:可以在Web服务器上通过http://protocol访问文件表,也可以通过执行操作系统命令或脚本访问数据表。

定义外部表时,需使用location子句指定外部数据的位置,使用format子句指定外部表文件格式。

LOCATION子句指定外部数据的位置。location字符串以协议字符串开头,该字符串指定用于访问数据的存储类型和协议。你可以使用以下协议访问外部表数据源,但不能在一个CREATEA EXTERNAL TABLE命令中混合使用多个协议。

  • gpfdist://protocol指定由一个或多个OushuDB文件服务器gpfdist实例提供服务的数据文件。
  • http://protocol指定一个或多个http url,并与web表一起使用。
  • hdfs://protocol指定由hadoop hdfs文件系统提供服务的数据文件。
  • hive://protocol指定由Hive数据库提供服务的数据文件。

Note

不推荐使用file://。相反,请使用gpfdist://、gpfdists://、hive://、hdfs://或COPY命令。

FORMAT子句指定如何格式化外部数据,对于gpfdist协议,有效的平面文件格式(包括HDFS中的文件)是分隔文本(TEXT)格式和逗号分隔值(CSV)格式。 版本3.0增加了对hdfs协议中orc格式的支持。如果文件中的数据不使用默认列分隔符、转义符、空字符串等,则必须指定其他格式选项,以便OushuDB正确读取外部文件中的数据。

Note

OushuDB目前只有hdfs协议和hive协议支持ORC格式。

以下内容是外部表定义的SQL命令,包含创建、修改和删除外部表: