postgresql fdw mysql_mysql同步数据到PostgreSQL(使用mysql_fdw)
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)相关推荐
- Oracle同步数据到MySQL
Oracle同步数据到MySQL 1.首先在TreeSoft数据库中配置两个数据源信息 2.配置数据同步任务,并执行任务 3.同步结果数据查看确认 4.目前TreeSoft支持以下数据同步方案 1.M ...
- pg函数同步数据到mysql_将数据从PostgreSQL复制到MySQL
我目前有一个PostgreSQL数据库,因为我们使用的其中一件软件仅支持该特定数据库引擎.然后,我有一个查询,该查询汇总了应用程序中的数据并将其拆分为更有用的格式. 在我的MySQL数据库中,我有一个 ...
- PostgreSQL与es的数据同步方案调研
PostgreSQL与es的数据同步方案调研 1.logstash 基于时间戳,或者id增量同步,且不能实时同步暂不考虑 2.pg-es-fdw https://github.com/Mikulas/ ...
- postgresql最全整理资料,PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
转载自:http://blog.163.com/digoal@126/blog/static/16387704020141229159715/ 希望通过这些视频帮到一些朋友, 同时对视频中的错误点烦请 ...
- 从 OSS 装载数据到 PostgreSQL
oss_fdw 在阿里云上,支持通过 oss_fdw 并行装载数据到 PostgreSQL 和 PPAS 中 oss_fdw 参数 oss_fdw 和其他 fdw 的接口一样,提供对外部数据源 oss ...
- postgresql FDW概念、用法与原理小结
最近突然遇到了一批使用fdw的场景,整理记录一把. 一. 强大的FDW FDW (foreign-data wrapper,外部数据包装器),可以让我们在PG中使用SQL查询极为丰富的外部数据: 本实 ...
- linux登录pg数据库命令,postgreSql基础命令及linux下postgreSql命令
(1)用户实用程序: createdb 创建一个新的Postgresql的数据库(和sql语句:CREATE DATABASE 相同) createuser 创建一个新的Postgresql的用户(和 ...
- maxcompute mysql_MySQL/RDS数据如何同步到MaxCompute之实践讲解
实验方案概述 本实验是对RDS同步数据到MaxCompute的一个初步讲解.当企业需要利用MaxCompute进行数据开发时,如果数据不在MaxCompute而在RDS中,首先需要将RDS中的数据同步 ...
- PostgreSQL SQL 语言:数据定义
本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1.表基础 关系型数据库中的一个表非常像纸上的一张表:它由行和列组成.列的数量和顺序是固定的,并且每一列拥有一个名字.行的 ...
最新文章
- JGG | 肠道微生物研究助力穿山甲圈养保护
- 十天学Linux内核之第二天---进程
- 记录一次Docker For Windows10镜像加速器配置
- Python导入模块Import和from+Import区别
- 我是如何学习写一个操作系统(一):开篇
- COLLEGE.sql(复制的时候注意路径!!!)
- Jetson TK1 一:调整屏幕分辨率
- python免费全套教程-python入门免费教程看这些就够了
- java default修饰符_Java学习笔记--- 变量类型,修饰符
- 根据快手账号的分享链接下载无水印视频,思路
- easysat源码解读(一)
- 西门子200smart与电流表Modbus RTU通讯
- 每天两分钟 远离电脑病
- 学会爬虫不用再收藏了,直接把网站拍照留念
- Git-fatal: unable to access ‘https://gitlab.XX.git/‘: Could not resolve host: gitlab.XX.com.cn
- Day3 分支和循环
- 解决NoteExpress无法在Word中插入引用文献
- 3dmax动画学习阶段总结
- Unity3D摄像机远、近切面绘制
- Android内部颜色转16进制颜色
热门文章
- java中final语句_Java中使用非final变量的不可访问语句
- 自建latex服务器,通过在线服务器编译LaTeX
- intel 指令集_苹果首款ARM Mac来了,浅谈ARM和Intel处理器
- Apache POI读取Excel
- Kotlin入门(18)利用单例对象获取时间
- Kotlin入门(7)循环语句的操作
- Android开发笔记(一百三十一)水波图形与水波动画
- 口红会染唇是什么意思_会涂口红和不会涂口红的女生,区别这么大?!
- 综合网上解决mysql 5.7保存emoji 失败问题
- 操作指针的条件和多级指针