1、安装

下载地址:https://github.com/EnterpriseDB/mysql_fdw

修改环境变量:

export MYSQLHOME=/usr/local/mysql

export PGHOME=/home/pg12/pgsql12.4

export LD_LIBRARY_PATH=$PGHOME/lib:$MYSQLHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib

export PATH=$PGHOME/bin:$MYSQLHOME/bin:$PATH:.

解压安装:

[root@oracle ~]# unzip mysql_fdw-master.zip

[root@oracle ~]# cd mysql_fdw-master

[root@oracle ~]# make USE_PGXS=1

[root@oracle ~]# make USE_PGXS=1 install

在pg中创建mysql_fdw插件:

bill=# create extension mysql_fdw ;

CREATE EXTENSION

这一步可能会出现如下报错:

bill=# create extension mysql_fdw ;

ERROR: failed to load the mysql query:

libmysqlclient.so: cannot open shared object file: No such file or directory

HINT: export LD_LIBRARY_PATH to locate the library

如果是源码编译安装的MySQL可能会出现这个问题,需要设置LD_LIBRARY_PATH,设置完之后再重新启动pg数据库。

2、使用

mysql中测试表:

mysql> select * from t_mysql;

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

| id | info |

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

| 1 | this is mysql |

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

1 row in set (0.00 sec)

pg中创建对应的forein server和外部表:

bill=# CREATE SERVER mysql_server

bill-# FOREIGN DATA WRAPPER mysql_fdw

bill-# OPTIONS (host '127.0.0.1', port '3306');

CREATE SERVER

bill=# CREATE USER MAPPING FOR bill

bill-# SERVER mysql_server

bill-# OPTIONS (username 'root', password 'root.123');

CREATE USER MAPPING

bill=# CREATE FOREIGN TABLE mysql_foreign_table1(

bill(# id int,

bill(# info text)

bill-# SERVER mysql_server

bill-# OPTIONS (dbname 'bill', table_name 't_mysql');

CREATE FOREIGN TABLE

查看:

数据已经同步过来

bill=# select * from mysql_foreign_table1 ;

id | info

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

1 | this is mysql

(1 row)

我们还可以直接IMPORT整个库生成本地的外部表。

例如:

bill=# IMPORT FOREIGN SCHEMA bill FROM SERVER mysql_server into bill;

IMPORT FOREIGN SCHEMA

可以发现,mysql中所有表都import过来了:

bill=# \dE

List of relations

Schema | Name | Type | Owner

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

bill | mysql_foreign_table1 | foreign table | bill

bill | t_mysql | foreign table | bill

bill | test | foreign table | bill

(3 rows)

写入数据:

我们可以直接在pg中写数据到mysql数据库,但是mysql的表必须有主键才可以:

bill=# insert into mysql_foreign_table1 values(2,'this is postgres');

ERROR: first column of remote table must be unique for INSERT/UPDATE/DELETE operation

在mysql中添加主键:

mysql> alter table t_mysql add primary key(id);

Query OK, 0 rows affected (0.03 sec)

Records: 0 Duplicates: 0 Warnings: 0

再次插入就可以成功了:

bill=# insert into mysql_foreign_table1 values(2,'this is postgres');

INSERT 0 1

我们还可以查看在pg中查询mysql中的表的执行计划会是什么样的:

bill=# explain verbose select count(*) from mysql_foreign_table1 ;

QUERY PLAN

------------------------------------------------------------------------------------------

Aggregate (cost=1012.50..1012.51 rows=1 width=8)

Output: count(*)

-> Foreign Scan on bill.mysql_foreign_table1 (cost=10.00..1010.00 rows=1000 width=0)

Output: id, info

Local server startup cost: 10

Remote query: SELECT NULL FROM `bill`.`t_mysql`

(6 rows)

bill=# explain verbose select * from mysql_foreign_table1 where id=1;

QUERY PLAN

-------------------------------------------------------------------------------------

Foreign Scan on bill.mysql_foreign_table1 (cost=10.00..1010.00 rows=1000 width=36)

Output: id, info

Local server startup cost: 10

Remote query: SELECT `id`, `info` FROM `bill`.`t_mysql` WHERE ((`id` = 1))

(4 rows)

postgresql fdw mysql_mysql同步数据到PostgreSQL(使用mysql_fdw)相关推荐

  1. Oracle同步数据到MySQL

    Oracle同步数据到MySQL 1.首先在TreeSoft数据库中配置两个数据源信息 2.配置数据同步任务,并执行任务 3.同步结果数据查看确认 4.目前TreeSoft支持以下数据同步方案 1.M ...

  2. pg函数同步数据到mysql_将数据从PostgreSQL复制到MySQL

    我目前有一个PostgreSQL数据库,因为我们使用的其中一件软件仅支持该特定数据库引擎.然后,我有一个查询,该查询汇总了应用程序中的数据并将其拆分为更有用的格式. 在我的MySQL数据库中,我有一个 ...

  3. PostgreSQL与es的数据同步方案调研

    PostgreSQL与es的数据同步方案调研 1.logstash 基于时间戳,或者id增量同步,且不能实时同步暂不考虑 2.pg-es-fdw https://github.com/Mikulas/ ...

  4. postgresql最全整理资料,PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)

    转载自:http://blog.163.com/digoal@126/blog/static/16387704020141229159715/ 希望通过这些视频帮到一些朋友, 同时对视频中的错误点烦请 ...

  5. 从 OSS 装载数据到 PostgreSQL

    oss_fdw 在阿里云上,支持通过 oss_fdw 并行装载数据到 PostgreSQL 和 PPAS 中 oss_fdw 参数 oss_fdw 和其他 fdw 的接口一样,提供对外部数据源 oss ...

  6. postgresql FDW概念、用法与原理小结

    最近突然遇到了一批使用fdw的场景,整理记录一把. 一. 强大的FDW FDW (foreign-data wrapper,外部数据包装器),可以让我们在PG中使用SQL查询极为丰富的外部数据: 本实 ...

  7. linux登录pg数据库命令,postgreSql基础命令及linux下postgreSql命令

    (1)用户实用程序: createdb 创建一个新的Postgresql的数据库(和sql语句:CREATE DATABASE 相同) createuser 创建一个新的Postgresql的用户(和 ...

  8. maxcompute mysql_MySQL/RDS数据如何同步到MaxCompute之实践讲解

    实验方案概述 本实验是对RDS同步数据到MaxCompute的一个初步讲解.当企业需要利用MaxCompute进行数据开发时,如果数据不在MaxCompute而在RDS中,首先需要将RDS中的数据同步 ...

  9. PostgreSQL SQL 语言:数据定义

    本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1.表基础 关系型数据库中的一个表非常像纸上的一张表:它由行和列组成.列的数量和顺序是固定的,并且每一列拥有一个名字.行的 ...

最新文章

  1. JGG | 肠道微生物研究助力穿山甲圈养保护
  2. 十天学Linux内核之第二天---进程
  3. 记录一次Docker For Windows10镜像加速器配置
  4. Python导入模块Import和from+Import区别
  5. 我是如何学习写一个操作系统(一):开篇
  6. COLLEGE.sql(复制的时候注意路径!!!)
  7. Jetson TK1 一:调整屏幕分辨率
  8. python免费全套教程-python入门免费教程看这些就够了
  9. java default修饰符_Java学习笔记--- 变量类型,修饰符
  10. 根据快手账号的分享链接下载无水印视频,思路
  11. easysat源码解读(一)
  12. 西门子200smart与电流表Modbus RTU通讯
  13. 每天两分钟 远离电脑病
  14. 学会爬虫不用再收藏了,直接把网站拍照留念
  15. Git-fatal: unable to access ‘https://gitlab.XX.git/‘: Could not resolve host: gitlab.XX.com.cn
  16. Day3 分支和循环
  17. 解决NoteExpress无法在Word中插入引用文献
  18. 3dmax动画学习阶段总结
  19. Unity3D摄像机远、近切面绘制
  20. Android内部颜色转16进制颜色

热门文章

  1. java中final语句_Java中使用非final变量的不可访问语句
  2. 自建latex服务器,通过在线服务器编译LaTeX
  3. intel 指令集_苹果首款ARM Mac来了,浅谈ARM和Intel处理器
  4. Apache POI读取Excel
  5. Kotlin入门(18)利用单例对象获取时间
  6. Kotlin入门(7)循环语句的操作
  7. Android开发笔记(一百三十一)水波图形与水波动画
  8. 口红会染唇是什么意思_会涂口红和不会涂口红的女生,区别这么大?!
  9. 综合网上解决mysql 5.7保存emoji 失败问题
  10. 操作指针的条件和多级指针