关于oushudb-hawq:OushuDB-创建和管理外部表中

47次阅读

共计 2162 个字符,预计需要花费 6 分钟才能阅读完成。

创立内部表

创立一个内部表,应用 CREATE EXTERNAL TABLE 命令。在这个命令里,需申明新表名称,各列名称及其数据类型,基于命令的 EXECUTE 子句或基于 URL 的 LOCATION 子句的内部数据起源,数据格式。

当创立一个可读内部表时,location 子句需指定应用一种协定指向内部数据源,format 子句需指定 TEXT、CSV、ORC 或 CUSTOM 用户自定义文本格式。比方:应用 gpfdist 协定在 gpfdist 目录中找到(.txt)格局的所有文本文件,来创立一个名为 ext_customer 的可读内部表。这些文件的格局是以‘|’作为列分隔符,空白空间为空。还能够在单行谬误隔离模式下拜访内部表的 SQL 定义:
CREATE EXTERNAL TABLE ext_customer(id int, name text, sponsor text)LOCATION (‘gpfdist://filehost:8081/*.txt’)FORMAT ‘TEXT’ (DELIMITER ‘|’ NULL ‘ ‘)LOG ERRORS INTO err_customer SEGMENT REJECT LIMIT 5;

或者创立与下面雷同的可读内部表定义,但应用 CSV 格式文件的示例:
CREATE EXTERNAL TABLE ext_customer(id int, name text, sponsor text)LOCATION (‘gpfdist://filehost:8081/*.csv’)FORMAT ‘CSV’ (DELIMITER ‘,’);

当创立一个可读 web 内部表时,除 location 子句形式指定内部数据形式外,还能够应用 execute 子句运行指定脚本(脚本必须位于所有 segment 主机上的同一地位)来拜访内部数据源。比方:在第五个虚构节点执行指定脚本创立一个内部表的 SQL 定义:
CREATE EXTERNAL WEB TABLE log_output (linenum int,message text)EXECUTE ‘/var/load_scripts/get_log_data.sh’ ON 5FORMAT ‘TEXT’ (DELIMITER ‘|’);

当创立一个可写内部表时,location 子句应用上述协定之一指向内部数据源,format 子句指定 TEXT、CSV、ORC 或 CUSTOM 用户自定义文本格式。例如:以下 SQL 命令显示如何创立可写 hdfs 内部表以自在加载、卸载、查问和插入数据:
CREATE WRITABLE EXTERNAL TABLE tbexternal (a int,b decimal(10,2),t text,d date)LOCATION (‘hdfs://host1:port1/tbexternaldir’)FORMAT ‘csv’ (DELIMITER ‘|’)LOG ERRORS INTO err_tbexternal SEGMENT REJECT LIMIT 5;

此表反对读取和写入,门路’/tbexternaldir’中的所有文件都能够读取以进行查问或加载,用户还能够通过将数据写入同一门路’/tbexternaldir’来卸载或将数据插入此表。操作此外部表的一些示例如下所示:
INSERT INTO tbexternal SELECT FROM tb;INSERT INTO tbexternal SELECT FROM tb WHERE t like ‘test%’;INSERT INTO tb SELECT FROM tbexternal;INSERT INTO tb SELECT FROM tbexternal WHERE t like ‘test%’;SELECT a,b FROM tbexternal WHERE b > 10;SELECT T1.a, T1.d FROM tbexternal T1, tbinternal T2 WHERE T1.t = T2.t;

以下命令显示如何以 orc 格局创立可写 hdfs 内部表:
CREATE WRITABLE EXTERNAL TABLE orcexternal (p text,q text)LOCATION (‘hdfs://host1:port1/orcexternaldir’)FORMAT ‘ORC’ (COMPRESSTYPE ‘lz4’);

以下命令显示如何以 orc 格局创立可写 hive 内部表:
CREATE WRITABLE EXTERNAL TABLE orcexternal (p text,q text)LOCATION (‘hive://host1:port1/dbname/orctablename’)FORMAT ‘ORC’ (COMPRESSTYPE ‘lz4’);

当创立一个可写 Web 内部表时,应用 location 子句指定内部数据源或 execute 子句指定执行脚本,应用 format 子句指定 TEXT、CSV、ORC 或 CUSTOM 用户本人定义的文本格式。例如:创立一个可写的内部 web 表,该表将 segment 接管到的输入数据管道化到名为_adreport_etl.sh 的可执行脚本:
CREATE WRITABLE EXTERNAL WEB TABLE campaign_out (LIKE campaign)EXECUTE ‘/var/unload_scripts/to_adreport_etl.sh’FORMAT ‘TEXT’ (DELIMITER ‘|’);

正文完
 0