目录
一、什么是gp 可写外部表?
创建可写外部表时需要声明WRITABLE。数据可以写入到gpfdist或者可执行程序,不支持写入本地文件。
- execute类型的外部数据URL格式是:EXECUTE ‘/var/load_scripts/get_log_data.sh’
- 其中execute指明了数据读写协议,/var/load_scripts/get_log_data.sh指定可执行程序。
- execute类型不仅支持读取外部数据,同时也支持写入外部数据。
- Greenplum外部表通过执行定义的外部执行程序:例如get_log_data.sh,和管道实现execute类型数据的读写。读外部数据:将程序的标准输出的作为数据来源;向外部写数据:将外部程序的标准输入作为数据表中的数据
二、实例
2.1 创建一个外部表,查看每个Segment上执行命令时所有的环境变量。创建外部表如下
=# create external web table exec_example(id int, name varchar(100), value text) EXECUTE 'env|xargs -I {} echo $GP_SEGMENT_ID={}' format 'TEXT' (DELIMITER '=') LOG ERRORS SEGMENT REJECT LIMIT 10 ROWS;
=# select * from exec_example limit 10;
id | name | value
----+-----------------------+--------------------------------------------
3 | GP_USER | gpadmin
3 | GP_HADOOP_CONN_JARDIR | lib//hadoop
3 | LC_MONETARY | C
3 | GP_CID | 0
3 | GPERA | 09877cd46d8003f1_201030102232
3 | GP_SEG_PG_CONF | /datap4/gpseg3/postgresql.conf
3 | SHELL | /bin/bash
3 | GPPERFMONHOME | /usr/local/greenplum-cc-web-2.0.0-build-32
3 | SSH_CLIENT | 10.5***3 28799 22
3 | LC_NUMERIC | C