create mysql table in PostgreSQL with mysql_fdw

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:
以前写过一些在PostgreSQL中创建file, CouchDB, Redis, PostgreSQL, Oracle等外部表的BLOG.
一直没有写MySQL的,刚好最近有一个项目要从MySQL迁移到PostgreSQL。今天补上如下 : 
下载
1. 
修改PATH和LD_LIBRARY_PATH包含mysql和postgresql的相关目录, 例如
su - root
export MYSQLHOME=/usr/local/mysql
export PGHOME=/usr/local/pgsql
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:.
make USE_PGXS=1
make USE_PGXS=1 install


2. mysql中的测试表
mysql> desc CMSArticles
    -> ;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| articleid   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| position    | int(11)          | NO   | MUL | 0       |                |
| cateid      | int(11) unsigned | NO   | MUL | 0       |                |
| db_id       | varchar(20)      | YES  | MUL | NULL    |                |
| title       | varchar(50)      | YES  |     | NULL    |                |
| link        | varchar(200)     | YES  |     | NULL    |                |
| icon        | varchar(200)     | YES  |     | NULL    |                |
| tag         | varchar(50)      | YES  |     | NULL    |                |
| keyword     | varchar(50)      | YES  |     | NULL    |                |
| tag_url     | varchar(200)     | YES  |     | NULL    |                |
| keyword_url | varchar(200)     | YES  |     | NULL    |                |
| summary     | varchar(300)     | YES  |     | NULL    |                |
| content     | text             | YES  |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+

3. 在库中创建extension
psql -h 127.0.0.1 -U postgres -d digoal
# create extension mysql_fdw;
# create server mysql_server1 foreign data wrapper mysql_fdw options(address '127.0.0.1', port '3306');
# CREATE USER MAPPING FOR digoal server mysql_server1 options (username 'root', password 'Roote');
# grant usage on FOREIGN server mysql_server1 to digoal;
\c digoal digoal
> create FOREIGN TABLE mysql_foreign_table1 (articleid int8, position int8, cateid int8, db_id varchar(20), title varchar(50), link varchar(200), icon varchar(200), tag varchar(50), keyword varchar(50), tag_url varchar(200), keyword_url varchar(200), summary varchar(300), content text) 
SERVER mysql_server1
OPTIONS (database 'my_digoal', table 'CMSArticles');
> select count(*) from CMSArticles;

与MySQL结果一致.

前面使用的是table选项, 另外一个创建外部表的参数, query. 如下 :
create FOREIGN TABLE mysql_foreign_table2 (articleid int8, position int8, cateid int8, db_id varchar(20), title varchar(50), link varchar(200), icon varchar(200), tag varchar(50), keyword varchar(50), tag_url varchar(200), keyword_url varchar(200), summary varchar(300), content text) 
SERVER mysql_server1
OPTIONS (database 'my_digoal', query 'select articleid, position, cateid, db_id, title, link, icon, tag, keyword, tag_url, keyword_url, summary, content from CMSArticles where articleid=1');


【参考】
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
6月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
480 62
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
12月前
|
关系型数据库 MySQL 数据库
市场领先者MySQL的挑战者:PostgreSQL的崛起
PostgreSQL(简称PG)是世界上最先进的开源对象关系型数据库,起源于1986年的加州大学伯克利分校POSTGRES项目。它以其丰富的功能、强大的扩展性和数据完整性著称,支持复杂数据类型、MVCC、全文检索和地理空间数据处理等特性。尽管市场份额略低于MySQL,但PG在全球范围内广泛应用,受到Google、AWS、Microsoft等知名公司支持。常用的客户端工具包括PgAdmin、Navicat和DBeaver。
810 4
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
611 4
|
关系型数据库 MySQL PostgreSQL
postgresql和mysql中的limit使用方法
postgresql和mysql中的limit使用方法
449 1
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
2523 3
|
SQL 关系型数据库 MySQL
MySQL异常一之: You can‘t specify target table for update in FROM clause解决办法
这篇文章介绍了如何解决MySQL中“不能在FROM子句中指定更新的目标表”(You can't specify target table for update in FROM clause)的错误,提供了错误描述、需求说明、错误做法和正确的SQL写法。
2458 0

推荐镜像

更多