postgres使用mysql外表

转载请注明出处https://www.cnblogs.com/funnyzpc/p/14223167.html

浅谈

postgres不知不觉已经升到了版本13,记得两年前还是版本10,当然这中间一直期望着哪天能在项目中使用postgresql,现在已实现哈~;

顺带说一下:使用postgresql 的原因是它的生态完整,还有一个很重要的点儿是 速度快 这个在第10版的时 这么说也许还为时过早,

但是在13这一版本下一点儿也不为过,真的太快了,我简单的用500w的数据做聚合,在不建立索引(主键除外)的情况下 执行一个聚合操作,postgres

的速度是mysql的8倍,真的太快了~;好了,这一章节我就聊一聊我实际碰到的问题,就是:跨库查询,这里是用mysql_fdw实现的。

环境准备

  • 一个mysql实例(5.7或8均可)

  • 一个postgres实例(这里使用源码编译安装的13,建议13,11或12也可)

  • 一台linux(以下内容使用的是centos,其它系统也可参考哈)

    以下内容仅仅为安装及使用mysql_fdw的教程,具体mysql及postgres怎么安装我就一并略去

准备libmysqlclient

注意:若mysql与postgresql在同一台linux机上,则无需安装mysql工具,请略过本段

  • wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  • tar -xvJf mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  • chown -R mysql:mysql /usr/local/mysql/
  • cd mysql-8.0.22-linux-glibc2.17-x86_64-minimal
  • cp -r ./* /usr/local/mysql/

配置环境变量

  • 配置文件

    vi /etc/profile

  • 添加mysql环境变量

    export MYSQL_HOME=/usr/local/mysql
    export PATH=$PATH:/usr/local/mysql/bin
    export LD_LIBRARY_PATH=MYSQL_HOME/lib:$LD_LIBRARY_PATH
  • 添加postgres环境变量

    export PG_HOME=/usr/local/pgsql
    export LD_LIBRARY_PATH=$PG_HOME/lib:$MYSQL_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
    export PATH=$PG_HOME/bin:$MYSQL_HOME/bin:$PATH:.
  • 刷新配置

    source /etc/profile

下载并编译mysql_fdw

重启postgres

安装mysql_fdw 并 配置完成环境变量必须重启postgresql,这个很重要

  su postgres
/usr/local/pgsql/bin/pg_ctl -D /mnt/postgres/data -l logfile stop
/usr/local/pgsql/bin/pg_ctl -D /mnt/postgres/data -l logfile start
psql [ or /usr/local/pgsql/bin/psql]

登录到postgres并配置mysql_server

  • 切换到指定数据库(很重要!!!): \c YOUR_DB_NAME
  • CREATE EXTENSION mysql_fdw;
  • CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'HOST', port '3306');
  • CREATE USER MAPPING FOR YOUR_DB_NAME SERVER mysql_server OPTIONS (username 'USERNAME', password 'PASSWORD');
  • GRANT USAGE ON FOREIGN SERVER mysql_server TO YOUR_DB_NAME;
  • GRANT ALL PRIVILEGES ON ods_tianmao_transaction TO YOUR_DB_NAME;

创建外表

创建的外表必须在mysql中有对应的表,否则无法使用(也不会在DB工具中显示)

  • 样例

    CREATE FOREIGN TABLE YOUR_TABLE_NAME(
    id numeric(22),
    date date ,
    name varchar(50),
    create_time timestamp
    )SERVER mysql_server OPTIONS (dbname 'YOUR_DB_NAME', table_name 'MYSQL_TABLE_NAME');

删除操作

  • 删除扩展

    DROP EXTENSION mysql_fdw CASCADE;

  • 删除mysql_server

    DROP SERVER [mysql_server] CASCADE;

  • 删除外表

    DROP FOREIGN TABLE [YOUR_FOREIGN_TABLE_NAME] CASCADE;

  • 修改user mapping

    ALTER USER MAPPING FOR YOUR_DB_USER SERVER mysql_server OPTIONS (SET password 'PASSWORD');
    ALTER USER MAPPING FOR YOUR_DB_USER SERVER mysql_server OPTIONS (SET username 'USERNAME');

最后

想说的是postgresql的外表功能实在是太好用了,建立mysql外表后可直接在posgresql中执行增删改查等操作

更强大的是 还可以执行与postgresql表的连表查询,真香~,省去了应用配置数据源的麻烦。

PostgreSQL使用MySQL外表(mysql_fdw)的更多相关文章

  1. 利用Navicat高效率postgresql转mysql数据库

    本人很喜欢postgresql数据库,也一直认为postgresql比mysql要更好更强大. 可生态环境太差了,无奈,最近要把一个小站转成mysql数据库. 小站主要表数据110万,pg_dump备 ...

  2. [评测]低配环境下,PostgresQL和Mysql读写性能简单对比(欢迎大家提出Mysql优化意见)

    [评测]低配环境下,PostgresQL和Mysql读写性能简单对比 原文链接:https://www.cnblogs.com/blog5277/p/10658426.html 原文作者:博客园--曲 ...

  3. PostgreSQL与MySQL常用命令比较[转]

    PostgreSQL与MySQL常用命令比较 原文链接: http://www.phpwell.com/?p=174 PostgreSQL MySQL 服务启动:1)#service postgres ...

  4. 【转】PostgreSQL与MySQL比较

    转自:https://www.cnblogs.com/geekmao/p/8541817.html PostgreSQL与MySQL比较   特性 MySQL PostgreSQL 实例 通过执行 M ...

  5. [转帖]PostgreSQL与MySQL比较 From 2010年

    PostgreSQL与MySQL比较 [复制链接]  http://bbs.chinaunix.net/thread-1688208-1-1.html osdba 稍有积蓄 好友 博客 消息 论坛徽章 ...

  6. PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的

    PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报  分类: MYSQL数据库(5)  PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...

  7. postgresql 和 mysql 数据库备份恢复以及时区问题

    概要 postgesql 12 备份/恢复脚本 时区设置 mysql 5.6 备份/恢复脚本 时区设置 概要 postgresql 和 mysql 是最常用的 2 种开源关系数据库, 很多项目也会优先 ...

  8. PostgreSQL 和 MySQL 在用途、好处、特性和特点上的异同

    PostgreSQL 和 MySQL 在用途.好处.特性和特点上的异同. PostgreSQL 和 MySQL 是将数据组织成表的关系数据库.这些表可以根据每个表共有的数据链接或关联.关系数据库使您的 ...

  9. Apache Doris ODBC Mysql外表在Ubuntu下使用方法及配置

    Apache Doris 社区 2022 年的总体规划,包括待开展或已开展.以及已完成但需要持续优化的功能.文档.社区建设等多方面,我们期待有更多的小伙伴参与进来讨论.同时也希望多多关注Doris,给 ...

随机推荐

  1. 文艺splay,占坑等着填

    昨天CF上去就A了前三道题,然后自闭罚坐一个小时什么也没写出来23333.似乎D题人均wa3发就很烦.还是肤浅了 今天精神状态不太好,可能是晚睡的缘故,那不如明天一起写了算了 蹲一波大选结果,蹲一波s ...

  2. 第7章 Python类型、类、协议 第7.1节 面向对象程序设计的相关知识

    Python被视为一种面向对象的语言,在介绍Python类相关的内容前,本节对面向对象程序设计相关的概念进行简单介绍. 一.    类和对象(实例) 在面向对象的程序设计(OOP)过程中有两个重要概念 ...

  3. PyQt(Python+Qt)学习随笔:通过QMainWindow的resizeDocks方法调整QDockWidget停靠窗大小

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QMainWindow的resizeDocks用于将QMainWind ...

  4. 第8.25节 Python风格的__getattribute__属性访问方法语法释义及使用

    一. 引言 在<第8.13节 Python类中内置方法__repr__详解>老猿介绍了在命令行方式直接输入"对象"就可以调用repr内置函数或__repr__方法查看对 ...

  5. php 序列化键、值逃逸

    转自https://www.cnblogs.com/wangtanzhi/p/12261610.html PHP反序列化的对象逃逸(很重要一点,引号的匹配是从左到右按字符串长度进行匹配) 任何具有一定 ...

  6. P1654 OSU! 题解

    \(x\) 为该位置有 \(1\) 的期望. 统计两个值 : \(suma\) 和 \(sumb\). \(suma\) 表示连续 \(X\) 个 \(1\) , \(X\) 的平方的期望, \(su ...

  7. 基于menu小插件探索工程实践

    目录 一.准备工作 1.C/C++环境搭建 2.VSCode的配置 (1) 安装插件: (2) 设置配置文件: 二.工程化编程实战 1.模块化设计 2.可重用设计:进一步抽象 menu的进一步优化 可 ...

  8. AWT09-弹球小游戏

    1.补充 为了让Java绘制动画,可以借助Swing的定时器,其构造为: 方法名 说明 Timer(int delay,ActionListener listener) 每间隔delay毫秒,自动触发 ...

  9. maven下载和配置

    maven就是管理架包(jar)的一个工具类,是一个绝佳的构建工具 但是maven是需要下载和配置环境的,和jdk差不多 1.首先进入apache的官网 http://maven.apache.org ...

  10. Linux系统-scp简介&坑

    文件请见这里: https://blog.csdn.net/xingxingzhilong/article/details/82909015