使用 www_fdw 插件向PG/PPAS导入数据-阿里云开发者社区

开发者社区> 阿里云数据库> 正文
登录阅读全文

使用 www_fdw 插件向PG/PPAS导入数据

简介: www_fdw 插件支持通过http协议把文本数据导入到PG/PPAS中 RDS PG/PPAS 新版本已经支持通过 www_fdw 下面简单介绍下使用方式 启动http服务 导入数据前,我们需要在文件服务器上启动一个http服务,再把要导入的文本数据放在对应目录 创建 www_fdw 插

简介

www_fdw 插件支持通过http协议把文本数据导入到PG/PPAS中
RDS PG/PPAS 新版本已经支持通过 www_fdw
下面简单介绍下使用方式

启动http服务

导入数据前,我们需要在文件服务器上启动一个http服务,再把要导入的文本数据放在对应目录

创建 www_fdw 插件

create extension www_fdw;

创建server和用户映射规则

CREATE SERVER www_fdw_test FOREIGN DATA WRAPPER www_fdw 
  OPTIONS (uri 'http://192.168.1.1/', request_serialize_callback 'test_request_serialize_callback',response_type'other', response_deserialize_callback 'test_response_deserialize_callback');

CREATE USER MAPPING FOR current_user SERVER www_fdw_test;

创建数据处理函数

这里需要注意的是,根据不同的格式的文本数据,需要定制下列函数,目的是把行数据拆分到表中的列

CREATE OR REPLACE FUNCTION test_request_serialize_callback(options WWWFdwOptions, quals text, INOUT url text, INOUT post WWWFdwPostParameters) AS 
$$

BEGIN
    RAISE NOTICE 'options parameter: %', options;
    RAISE NOTICE 'quals parameter: %', quals;
    RAISE NOTICE 'url parameter: %', url;
    RAISE NOTICE 'post parameter: %', post;
    url := url;
END; 
$$
 LANGUAGE PLPGSQL;

CREATE OR REPLACE FUNCTION test_response_deserialize_callback(options WWWFdwOptions, response text) RETURNS SETOF www_fdw_test AS 
$$

DECLARE
        title text;
        link text;
        snippet text;
        rows text[];
        i integer;
        fields text[];
        r RECORD;
BEGIN
        RAISE DEBUG 'options parameter: %', options;
        RAISE DEBUG 'response parameter: %', response;
        rows := regexp_split_to_array(response, E'\\n');

    RAISE NOTICE 'row: %', rows[0];

        FOR i IN 1 .. array_length(rows,1) LOOP
            fields := regexp_split_to_array(rows[i], E' ');
            title := fields[1];
            link := fields[2];
            snippet := fields[3];
            r := ROW(title, link, snippet);
            RETURN NEXT r;
        END LOOP;
END; 
$$
 LANGUAGE PLPGSQL;

创建外部表

CREATE FOREIGN TABLE www_fdw_test (
  t1 text, t2 text ,t3 text
) SERVER www_fdw_test;

数据的访问

接下来用户就可以像访问表那样,访问对应http服务上的外部数据了.举例:

select * from www_fdw_test;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云数据库
使用钉钉扫一扫加入圈子
+ 订阅

帮用户承担一切数据库风险,给您何止是安心!

官方博客
链接