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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 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;
目录
相关文章
|
5天前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
57 0
|
SQL 搜索推荐 关系型数据库
mysql中explain使用说明
mysql中确定sql是否需要优化的方式很多,常见的就是看sql的执行时间,一般的sql执行的正常查询时间是在毫秒级,几十毫秒或是几百毫秒(数据在千万级别的除外,暂时没有处理过此处不做讨论),执行时间超过此时间段的就需要进行优化了。
mysql中explain使用说明
|
SQL 编解码 关系型数据库
Apache Doris ODBC mysql外表注意事项
这里要说的是在使用Mysql的ODBC外表的时候要注意事项。
356 0
Apache Doris ODBC mysql外表注意事项
|
弹性计算 关系型数据库 MySQL
|
弹性计算 安全 关系型数据库
阿里云RDS PG 10 HA版 - 使用postgres_fdw外部表插件 - 实例内跨库访问其他库的表
标签 PostgreSQL , postgres_fdw , 阿里云 , 内核安全限制 背景 阿里云rds pg内核安全上做了限制,只能访问当前实例的其他库,所以使用dblink, postgres_fdw时,虽然PG功能上是可以访问其他远程实例的,但是阿里云RDS PG限制了只能访问当前实例。 另一方面,当前实例是HA版本,并且是云化版本,所以IP,PORT都可能在发生迁移、切换后发
607 0
|
关系型数据库 MySQL 数据库
PostgreSQL外部数据插件:mysql_fdw
概述 PostgreSQL具有插件功能,通过不同的插件拓展,实现数据库本身不包含的功能,以满足用户的需求。mysql_fdw 就是一个强大的外部表功能,所谓外部表,就是在PG数据库中通过SQL访问外部数据源数据,就像访问本地数据库一样,下面就来测试一下使用mysql_fdw 来访问mysql中的数...
10309 2
|
关系型数据库 MySQL
MySQL到ADB PG版表结构转换工具
工具提供将MySQL中的表结构转换为ADB PG版规范的表结构
2066 0
|
存储 关系型数据库 MySQL
|
Java 关系型数据库 MySQL
将MySQL中的数据导入到solr索引库
利用solrJ向索引库导入数据http://www.bieryun.com/3229.html 需求:将MySQL中的数据导入到solr索引库 定义实体类: [java] view plain copy public class SearchItem implements Seri.
1574 0