ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pgspider 简单试用

2020-02-05 13:51:41  阅读:307  来源: 互联网

标签:postgres parent CREATE t1 pgspider pg 简单 试用


前边已经构建好了,关于sqlite,mysql,以及默认的pg 的扩展,以下是一个简单的学习试用

环境准备

为了简单目前只测试关于pg的,后边会学习关于mysql的

  • docker-compose 文件
version: "3"
services: 
  pg-core:
    image: dalongrong/pgspider:core
    ports: 
    - "5432:5432"
    environment: 
    - "POSTGRES_PASSWORD:dalong"
  pg:
    image: postgres:12.1-alpine
    ports: 
    - "5433:5432"
    environment: 
    - "POSTGRES_PASSWORD:dalong"
  pg-mysql:
    image: dalongrong/pgspider:mysql
    ports: 
    - "5434:5432"
    environment: 
    - "POSTGRES_PASSWORD:dalong"
  mysql:
    image: mysql:5.7.16
    ports:
      - 3306:3306
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: dalongrong
      MYSQL_DATABASE: demo
      MYSQL_USER: demo
      MYSQL_PASSWORD: dalongrong
      TZ: Asia/Shanghai
  pg-sqlite:
    image: dalongrong/pgspider:sqlite
    ports: 
    - "5435:5432"
    environment: 
    - "POSTGRES_PASSWORD:dalong"

使用

  • 启动docker-compose 服务
docker-compose up -d
  • 创建扩展
CREATE EXTENSION pgspider_core_fdw;
CREATE EXTENSION postgres_fdw;
CREATE EXTENSION pgspider_fdw;
  • 创建parent 以及child server
// parent 为当前操作的pg server
CREATE SERVER parent FOREIGN DATA WRAPPER pgspider_core_fdw OPTIONS (host '127.0.0.1', port '5432');
// child 为另外一个pg server
CREATE SERVER postgres_svr FOREIGN DATA WRAPPER postgres_fdw OPTIONS(host 'pg', port '5432', dbname 'postgres');
  • 创建user 映射
CREATE USER MAPPING FOR CURRENT_USER SERVER parent OPTIONS(user 'postgres', password 'dalong');
CREATE USER MAPPING FOR CURRENT_USER SERVER postgres_svr OPTIONS(user 'postgres', password 'dalong');
  • 创建parent 表映射
// __spd_url 是必须在parent 中定义的表字段
CREATE FOREIGN TABLE t1(i int, t text, __spd_url text) SERVER parent;
  • 创建child 表映射
// 当暴露为多租户级的表,需要使用格式为`[Multi-Tenant table name]__[data source name]__0`
CREATE FOREIGN TABLE t1__postgres_svr__0(i int, t text) SERVER postgres_svr OPTIONS (table_name 't1');
  • 创建remote pg server 表t1&&
CREATE TABLE t1 (
    i SERIAL PRIMARY KEY,
    t text
);
INSERT INTO "public"."t1"("i","t")
VALUES
(1,E'demo');
  • 查询数据
select * from t1;

效果

 

 

  • 基于node 节点过滤
SELECT * FROM t1 IN ('/postgres_svr/');

效果

 

 

说明

以上是一个简单的使用,目前pgspider 还提供了influxdb 以及GridDB 的fdw 扩展,其他的扩展应该也是可以集成的

参考资料

https://github.com/pgspider/pgspider
https://hub.docker.com/repository/docker/dalongrong/pgspider
https://github.com/rongfengliang/pgspider-docker

标签:postgres,parent,CREATE,t1,pgspider,pg,简单,试用
来源: https://www.cnblogs.com/rongfengliang/p/12263454.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有