greenplum 外部表 oracle,GREENPLUM使用技巧(一)- 使用外部表实现DBLINK功能

很多使用GP的用户都希望GP提供类似ORACLE DBLINK的功能,实现跨数据库的数据查询。其实虽然GP没有直接提供该功能,但是我们可以通过WEB EXTERNAL TABLE实现类似功能,在GP内部进行跨数据库查询。其实现步骤比较简单,下面以ORACLE为例,通过GREENPLUM的外部表直接查询ORACLE中的数据。

1.首先要在MASTER上安装ORACLE客户端

2.修改参数gp_external_enable_exec = on

3.定义一个访问ORACLE数据的SHELL脚本 vi sales.sh

#!/bin/bash

sqlplus -S sh/sh <

set arraysize 5000;

set linesize 32767;

set pagesize 0;

set heading off;

set feedback off;

alter session set nls_date_format='YYYY-MM-DD';

select '"'||prod_id||'","'||CUST_ID||'","'||TIME_ID||'","'||CHANNEL_ID||'","'||PROMO_ID||'","'||QUANTITY_SOLD||'","'||AMOUNT_SOLD||'"' as text from sales where rownum<10;

set feedback on;

set heading on;

quit;

EOF

exit

chmod 777 sales.sh

4 定义web external table调用sales.sh

CREATE EXTERNAL WEB TABLE ora_sales

(PROD_ID numeric,

CUST_ID numeric  ,

TIME_ID DATE  ,

CHANNEL_ID numeric  ,

PROMO_ID numeric  ,

QUANTITY_SOLD numeric(10,2) ,

AMOUNT_SOLD numeric(10,2) )

EXECUTE '/home/oracle/sales.sh'

ON MASTER

FORMAT 'CSV' ;

5 在greenplum中发布SQL,访问oracle中的数据

sales_history=# select * from ora_sales;

prod_id | cust_id |       time_id       | channel_id | promo_id | quantity_sold | amount_sold

---------+---------+---------------------+------------+----------+---------------+-------------

13 |     987 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    1660 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    1762 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    1843 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    1948 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    2273 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    2380 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    2683 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

13 |    2865 | 1998-01-10 00:00:00 |          3 |      999 |             1 |     1232.16

(9 rows)

通过灵活定义shell脚本,还可以通过GP的外部表实现更多更强大的功能

[ 本帖最后由 LEE_CHAO 于 2011-5-12 16:24 编辑 ]

作者: LEE_CHAO

发布时间: 2011-05-12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值