postgresql添加mysql_fdw测试过程
请先确认已经安装好mysql_fdw,如果没有配置好点这:https://www.cnblogs.com/ohsolong/p/13041989.html
1.切换至postgres用户,输入密码登录 。注:如果安装了postgresql系统会自动创建该用户
su postgres
2.登录postgres数据库。注:安装postgresql时默认生成的数据库, 也可以登录自己创建的数据库,这里为了方便直接登录默认提供的数据库。
$ psql
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.
postgres=#
2.接下来按照官方文档流程使用mysql_fdw,官方文档点这:https://pgxn.org/dist/mysql_fdw/
使用的命令说明在postgresql文档中,点这:http://postgres.cn/docs/10/postgres-fdw.html
第一步:加载mysql_fdw扩展
CREATE EXTENSION mysql_fdw;
第二步:创建连接外部数据库的连接对象
CREATE SERVER mysql_server
FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (host '127.0.0.1', port '3306');
第三步:创建用户映射,postgresql用户映射mysql服务器的用户(postgresql数据库用户:postgres; mysql数据库用户:foo)
CREATE USER MAPPING FOR postgres
SERVER mysql_server
OPTIONS (username 'foo', password 'bar');
第四步:创建与mysql中对应的外部表。注:表名称,列名一致,对应列数据类型可以不同但能够转换(依赖与数据库本身)
CREATE FOREIGN TABLE warehouse(
warehouse_id int,
warehouse_name text,
warehouse_created TIMESTAMPZ)
SERVER mysql_server
OPTIONS (dbname 'db', table_name 'warehouse');
在postgresql中向mysql外部数据库插入数据,发现出出错。
postgres=# insert into warehouse values (1,'ups',now());
ERROR: failed to connect to MySQL: Access denied for user 'foo'@'localhost' (using password: YES)
3.上面出错的原因是我没有安装mysql_server,
以及没有在mysql中添加上面映射的 foo 用户,
以及没有创建名为db的数据库并在其中创建warehouse表,接下来进行配置。
第一步:安装mysql_server,启动mysql服务,切换至root用户登录mysql
安装数据库
$ sudo apt install mysql-server
启动数据库
$ service mysql start
登录mysql并创建远程用户
$ su root
# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
create user foo identified by 'bar';
Query OK, 0 rows affected (0.00 sec)
给用户授权
mysql> grant all privileges on *.* to 'foo'@'%'identified by 'bar' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
创建数据库
mysql> create database db;
Query OK, 1 row affected (0.00 sec)
计入数据库
mysql> user db;
创建表
mysql> create table warehouse( warehouse_id int, warehouse_name text, warehouse_created timestamp);
Query OK, 0 rows affected (0.03 sec)
4.在postgresql上向外表插入数据,发现没有创建表的唯一索引
postgres=# insert into warehouse values (1, 'ups', now());
ERROR: first column of remote table must be unique for INSERT/UPDATE/DELETE operation
mysql表中创建唯一索引
mysql> create unique index warehouse_index on warehouse(warehouse_id);
5.最后测试
postgresql插入数据 mysql中查询成功(INSERT INTO)
postgres=# insert into warehouse values (1,'ups',now());
INSERT 0 1
postgres=#
mysql> select * from warehouse;
+--------------+----------------+---------------------+
| warehouse_id | warehouse_name | warehouse_created |
+--------------+----------------+---------------------+
| 1 | ups | 2020-06-04 15:41:51 |
+--------------+----------------+---------------------+
1 row in set (0.00 sec) mysql>
postgresql更新数据 mysql中查询成功(UPDATE)
postgres=# update warehouse set warehouse_name = 'ups_new' ,warehouse_created = now() where warehouse_id=1;
UPDATE 1
postgres=#
mysql> select * from warehouse;
+--------------+----------------+---------------------+
| warehouse_id | warehouse_name | warehouse_created |
+--------------+----------------+---------------------+
| 1 | ups_new | 2020-06-04 16:53:01 |
+--------------+----------------+---------------------+
1 row in set (0.00 sec) mysql>
postgresql删除数据 mysql中查询成功(DELETE)
postgres=# delete from warehouse where warehouse_id=1;
DELETE 1
postgres=#
mysql> select * from warehouse;
Empty set (0.00 sec) mysql>
done
第一次使用外部数据功能,看了一些文档,总的来说不难。吧整个流程整理了一下,以后用到有迹可循,也希望能够帮助到大家。
postgresql添加mysql_fdw测试过程的更多相关文章
- 【PostgreSQL】PostgreSQL添加新服务器连接时,报错“Server doesn't listen ”,已解决。
PostgreSQL添加新的服务器连接时,报错:
- 给PostgreSQL添加MySQL的unix_timestamp与from_unixtime函数
MySQL的2个常用函数unix_timestamp()与from_unixtime PostgreSQL并不提供,但通过PostgreSQL强大的扩展性可以轻松的解决问题. 话说远在天边,尽在眼前, ...
- PostgreSQL通过mysql_fdw访问MySQL数据库
Mysql与PostgreSQL的安装过程省略. 为简便起见,把MySQL和PostgreSQL都安装在一个机器上,然后在此机器上(准确地说是在PostgreSQL运行的机器上)安装mysql_fdw ...
- postgresql添加字段
ALTER TABLE jiangan_config ADD COLUMN article text NOT NULL DEFAULT ''; pg_dump -s database_name -t ...
- postgresql 添加uuid扩展
去年用EF Core做数据迁移到psql数据库的时候遇到了缺失uuid的错误,当时帅气的脸蛋突然懵逼了.现记录一下 以备参考. 环境:Centos7.2 psql Xshell Xshell连接C ...
- Postgresql添加/删除触发器示例
-- 定义触发器 CREATE TRIGGER "vss_after_insert_flow_201702" AFTER INSERT ON "public". ...
- postgresql+slony-i安装配置主从
slon软件下载地址:slony1-1.2.6 http://slony.info/downloads/1.2/source/ postgresql下载地址: http://www.postgresq ...
- 安装Postgresql
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; line-height: 150%; fon ...
- postgresql总结
这篇博客主要对PostgreSQL进行总结,内容偏基础. 这里先附上一个PostgreSQL的中文资源:PostgreSQL 8.1 中文文档.英文不好的同学可以看看这个. 安装PostgreSQL ...
随机推荐
- js函数组合
纯函数和柯里化容易引起洋葱代码 函数组合可以让我们把细粒度的函数重新组合生成一个新的函数 函数组合并没有减少洋葱代码,只是封装了洋葱代码 函数组合执行顺序从右到左 满足结合律既可以把g和h组合 还可以 ...
- prefetch和preload
前面的话 基于VUE的前端小站改造成SSR服务器端渲染后,HTML文档会自动使用preload和prefetch来预加载所需资源,本文将详细介绍preload和prefetch的使用 资源优先级 在介 ...
- vue3中使用computed
演示示例(vant组件库的轮播图): <van-swipe :loop="false" :width="150" class="my-Swipe ...
- 自学 TypeScript 第二天 编译选项
前言: 昨天我们学习了 TS 的数据类型,不知道大家回去以后练习没练习,如果你练习了一定会发现一个问题,我们的 TS 好像和 JS 不太一样 JS 写完之后直接就可以放到页面上,就可以用了,而我们的 ...
- 谈软件-专家谈C/C++重构的操作与思路
1.Refactoring: 对软件内部结构的一种调整,目的是不该被软件的可观察行为的前提上,提高其可理解性,降低其修改成本. 2.代码坏味道 2.1.不易复用 2.2.不易理解 2.3.存在冗余 3 ...
- 基于python的数学建模---场线与数值解(微分方程)
import numpy as np from scipy import integrate import matplotlib.pyplot as plt import sympy def plot ...
- linux子网掩码修改记录
1.输入密码进入linux,并且进入root2.输入ifconfig.返回网卡信息,释:其中eno1为当前以太网名称.Inet IP/子网掩码位置数 Bcast广播地址 或者mask子网掩码3.修改子 ...
- 数据结构初阶--堆排序+TOPK问题
堆排序 堆排序的前提 堆排序:是指利用堆这种数据结构所设计的一种排序算法.堆排序通过建大堆或者小堆来进行排序的算法. 举个例子:给定我们一个数组{2, 3,4, 2,4,7},我们可把这个数组在逻辑上 ...
- 整理 js 日期对象的详细功能,使用 js 日期对象获取具体日期、昨天、今天、明天、每月天数、时间戳等,以及常用的日期时间处理方法
在 javascript 中内置了一个 Date 对象,可用于实现一些日期和时间的操作. 本文整理 js 日期对象的详细功能,使用 js 日期对象获取具体日期.昨天.今天.明天.每月天数.时间戳等,以 ...
- 12V转5V降压芯片,12V转3.3V稳压芯片电路图
12V转5V应用中,大多要求会输出电流高的,稳压LDO就不能满足了,需要使用DC-DC降压芯片来持续稳压5V,输出电流1000MA,2000MA,3000MA,5000MA等.不同的输出电流可以选择适 ...