PostgreSQL通過(guò)mysql_fdw連通MySQL實(shí)戰(zhàn)
mysql_fdw 就像是 PostgreSQL 和 MySQL 數(shù)據(jù)庫(kù)之間的一座雙向橋梁。它允許你在 PostgreSQL 中創(chuàng)建一個(gè)“外部表”,這個(gè)表直接映射到遠(yuǎn)程 MySQL 數(shù)據(jù)庫(kù)中的真實(shí)表。之后,你就可以像操作本地 PostgreSQL 表一樣,對(duì)這個(gè)外部表進(jìn)行查詢(SELECT)、插入(INSERT)、更新(UPDATE)和刪除(DELETE)? 操作,而 mysql_fdw 會(huì)在背后自動(dòng)完成所有與 MySQL 數(shù)據(jù)庫(kù)的通信和數(shù)據(jù)轉(zhuǎn)換工作。
1. 安裝插件
你需要在 PostgreSQL 所在的服務(wù)器上安裝 mysql_fdw,它依賴 MySQL 的客戶端開(kāi)發(fā)庫(kù)。從GitHub或PGXN網(wǎng)站下載mysql_fdw源碼包。
mysql_fdw GitHub下載地址:

https://github.com/EnterpriseDB/mysql_fdw
1)使用yum安裝依賴和開(kāi)發(fā)包 yum install postgresql-server-devel mysql-devel 2) 解壓編譯安裝 unzip /opt/mysql_fdw-REL-2_9_3.zip -d /home/postgres cd myql_fdw-REL-2_9_3 make USE_PGXS=1 make USE_PGXS=1 install 安裝成功后,你需要重啟 PostgreSQL服務(wù), 或者至少讓正在使用的數(shù)據(jù)庫(kù)重新加載共享庫(kù)。
2. 啟用插件服務(wù)
以下是一個(gè)簡(jiǎn)單的使用示例,所有命令在 PoatgreSQL 中執(zhí)行:
1)加載擴(kuò)展插件 CREATE EXTENSION mysql_fdw; 2)創(chuàng)建服務(wù)器對(duì)象 CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host '192.168.3.11', port '3306'); 3) 授權(quán) GRANT USAGE ON FOREIGN SERVER mysql_server TO postgres;

3. 建立用戶映射
CREATE USER MAPPING FOR postgres SERVER mysql_server OPTIONS (username 'root', password 'root@A123');
4. 處理數(shù)據(jù)
橋梁已經(jīng)接通,最后一步就是在 PostgreSQL 這端創(chuàng)建一個(gè)“入口”,也就是外部表(Foreign Table)。這張表的列名和數(shù)據(jù)類型應(yīng)該與 MySQL 中的源表相對(duì)應(yīng)。
CREATE FOREIGN TABLE warehouse ( warehouse_id int, warehouse_name text, warehouse_created timestamp )SERVER mysql_server OPTIONS (dbname 'aidb', table_name 'warehouse');
這里要注意,mysql_fdw 的一個(gè)核心限制是為了確保能準(zhǔn)確追蹤和操作遠(yuǎn)程表中的特定行,它要求外部表定義中的第一列,必須對(duì)應(yīng)遠(yuǎn)程MySQL表中的一個(gè)唯一列(如主鍵或具有唯一約束的列)。
接下里我們就可以在PostgreSQL 中 處理相關(guān)的數(shù)據(jù)了
1)插入數(shù)據(jù) INSERT INTO warehouse values (1, 'UPS', current_date); INSERT INTO warehouse values (2, 'TV', current_date); INSERT INTO warehouse values (3, 'Table', current_date); 2)刪除更新數(shù)據(jù) DELETE FROM warehouse where warehouse_id = 3; UPDATE warehouse set warehouse_name = 'UPS_NEW' where warehouse_id = 1; 3)查看 執(zhí)行計(jì)劃 EXPLAIN VERBOSE SELECT warehouse_id, warehouse_name FROM warehouse WHERE warehouse_name LIKE 'TV' limit 1;
如果需要映射一個(gè)模式(Schema)下的多張表,使用 IMPORT FOREIGN SCHEMA命令會(huì)非常高效,它可以自動(dòng)為你創(chuàng)建所有表的外部表定義 。
IMPORT FOREIGN SCHEMA someschema FROM SERVER mysql_server INTO public;
5.運(yùn)維管理
當(dāng)通過(guò) mysql_fdw 連接 MySQL 進(jìn)行運(yùn)維時(shí),可以查詢以下 PostgreSQL 系統(tǒng)表和目錄視圖來(lái)查看和管理外部對(duì)象
查看所有外部表的定義 SELECT * FROM pg_foreign_table; 以標(biāo)準(zhǔn) SQL 視角查看外部表 SELECT * FROM information_schema.foreign_tables; 查看 mysql_fdw 服務(wù)器的連接配置 SELECT * FROM pg_foreign_server; 查看連接到 MySQL 所用的用戶名映射 SELECT * FROM pg_user_mappings;

總結(jié)
mysql_fdw 是一個(gè)極其便捷的“數(shù)據(jù)橋梁”工具。 它讓跨數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)變得像訪問(wèn)本地表一樣自然,特別適合混合架構(gòu)下的數(shù)據(jù)查詢、遷移過(guò)渡期以及臨時(shí)的數(shù)據(jù)整合需求。
到此這篇關(guān)于PostgreSQL通過(guò)mysql_fdw連通MySQL實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)PostgreSQL連通MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
postgresql數(shù)據(jù)庫(kù) timescaledb 時(shí)序庫(kù) 把大數(shù)據(jù)量表轉(zhuǎn)換為超表的問(wèn)題
這篇文章主要介紹了postgresql數(shù)據(jù)庫(kù) timescaledb 時(shí)序庫(kù) 把大數(shù)據(jù)量表轉(zhuǎn)換為超表,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
PostGIS中ST_Union與ST_Collect的區(qū)別與使用詳解
這篇文章主要介紹了PostGIS中ST_Union與ST_Collect的區(qū)別與使用,對(duì)于初入PostGIS世界的新手來(lái)說(shuō),眾多的地理空間函數(shù)可能會(huì)讓人感到眼花繚亂,不知從何下手,而ST_Union與ST_Collect這兩個(gè)函數(shù),由于它們?cè)诠δ苌洗嬖谝欢ǖ南嗨菩?常常容易被混淆,需要的朋友可以參考下2026-01-01
Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法
最近有需要對(duì)數(shù)據(jù)進(jìn)行遷移的需求,由于postgres性能的關(guān)系,單表3000W的數(shù)據(jù)量查詢起來(lái)有一些慢,需要對(duì)大表進(jìn)行切割,拆成若干個(gè)子表,涉及到原有數(shù)據(jù)要遷移到子表的需求,這篇文章主要介紹了Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法,需要的朋友可以參考下2024-08-08
基于PostgreSQL的時(shí)序數(shù)據(jù)庫(kù)TimescaleDB的基本用法和概念
時(shí)序數(shù)據(jù)是指按照時(shí)間順序存儲(chǔ)的數(shù)據(jù),TimescaleDB是一個(gè)開(kāi)源的、擴(kuò)展了PostgreSQL的時(shí)序數(shù)據(jù)庫(kù)擴(kuò)展,本文就給大家詳細(xì)的介紹一下基于PostgreSQL的時(shí)序數(shù)據(jù)庫(kù)TimescaleDB的基本用法和概念,需要的朋友可以參考下2023-06-06
Postgresql 數(shù)據(jù)庫(kù)轉(zhuǎn)義字符操作
這篇文章主要介紹了Postgresql 數(shù)據(jù)庫(kù)轉(zhuǎn)義字符操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL Public 模式的風(fēng)險(xiǎn)及安全遷移問(wèn)題小結(jié)
本文主要討論了PostgreSQL中public模式的問(wèn)題和解決方案,public模式默認(rèn)對(duì)所有用戶開(kāi)放訪問(wèn)權(quán)限,容易發(fā)生命名沖突,且難以維護(hù)和隔離,修改或刪除它可能導(dǎo)致擴(kuò)展無(wú)法正常工作,為解決這問(wèn)題,建議新建模式,將public模式下的所有業(yè)務(wù)對(duì)象遷移過(guò)去2024-10-10

