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

https://github.com/EnterpriseDB/mysql_fdw
1)使用yum安裝依賴和開發(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服務, 或者至少讓正在使用的數據庫重新加載共享庫。
2. 啟用插件服務
以下是一個簡單的使用示例,所有命令在 PoatgreSQL 中執(zhí)行:
1)加載擴展插件 CREATE EXTENSION mysql_fdw; 2)創(chuàng)建服務器對象 CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host '192.168.3.11', port '3306'); 3) 授權 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. 處理數據
橋梁已經接通,最后一步就是在 PostgreSQL 這端創(chuàng)建一個“入口”,也就是外部表(Foreign Table)。這張表的列名和數據類型應該與 MySQL 中的源表相對應。
CREATE FOREIGN TABLE warehouse ( warehouse_id int, warehouse_name text, warehouse_created timestamp )SERVER mysql_server OPTIONS (dbname 'aidb', table_name 'warehouse');
這里要注意,mysql_fdw 的一個核心限制是為了確保能準確追蹤和操作遠程表中的特定行,它要求外部表定義中的第一列,必須對應遠程MySQL表中的一個唯一列(如主鍵或具有唯一約束的列)。
接下里我們就可以在PostgreSQL 中 處理相關的數據了
1)插入數據 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)刪除更新數據 DELETE FROM warehouse where warehouse_id = 3; UPDATE warehouse set warehouse_name = 'UPS_NEW' where warehouse_id = 1; 3)查看 執(zhí)行計劃 EXPLAIN VERBOSE SELECT warehouse_id, warehouse_name FROM warehouse WHERE warehouse_name LIKE 'TV' limit 1;
如果需要映射一個模式(Schema)下的多張表,使用 IMPORT FOREIGN SCHEMA命令會非常高效,它可以自動為你創(chuàng)建所有表的外部表定義 。
IMPORT FOREIGN SCHEMA someschema FROM SERVER mysql_server INTO public;
5.運維管理
當通過 mysql_fdw 連接 MySQL 進行運維時,可以查詢以下 PostgreSQL 系統(tǒng)表和目錄視圖來查看和管理外部對象
查看所有外部表的定義 SELECT * FROM pg_foreign_table; 以標準 SQL 視角查看外部表 SELECT * FROM information_schema.foreign_tables; 查看 mysql_fdw 服務器的連接配置 SELECT * FROM pg_foreign_server; 查看連接到 MySQL 所用的用戶名映射 SELECT * FROM pg_user_mappings;

總結
mysql_fdw 是一個極其便捷的“數據橋梁”工具。 它讓跨數據庫的數據訪問變得像訪問本地表一樣自然,特別適合混合架構下的數據查詢、遷移過渡期以及臨時的數據整合需求。
到此這篇關于PostgreSQL通過mysql_fdw連通MySQL實戰(zhàn)的文章就介紹到這了,更多相關PostgreSQL連通MySQL內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
postgresql數據庫 timescaledb 時序庫 把大數據量表轉換為超表的問題
這篇文章主要介紹了postgresql數據庫 timescaledb 時序庫 把大數據量表轉換為超表,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
PostGIS中ST_Union與ST_Collect的區(qū)別與使用詳解
這篇文章主要介紹了PostGIS中ST_Union與ST_Collect的區(qū)別與使用,對于初入PostGIS世界的新手來說,眾多的地理空間函數可能會讓人感到眼花繚亂,不知從何下手,而ST_Union與ST_Collect這兩個函數,由于它們在功能上存在一定的相似性,常常容易被混淆,需要的朋友可以參考下2026-01-01
基于PostgreSQL的時序數據庫TimescaleDB的基本用法和概念
時序數據是指按照時間順序存儲的數據,TimescaleDB是一個開源的、擴展了PostgreSQL的時序數據庫擴展,本文就給大家詳細的介紹一下基于PostgreSQL的時序數據庫TimescaleDB的基本用法和概念,需要的朋友可以參考下2023-06-06
PostgreSQL Public 模式的風險及安全遷移問題小結
本文主要討論了PostgreSQL中public模式的問題和解決方案,public模式默認對所有用戶開放訪問權限,容易發(fā)生命名沖突,且難以維護和隔離,修改或刪除它可能導致擴展無法正常工作,為解決這問題,建議新建模式,將public模式下的所有業(yè)務對象遷移過去2024-10-10

