“DB Link 跨库查询”通常指在不同数据库之间,像查本地表一样查询远程数据库的数据。不同数据库的实现方式不一样,但核心思想都是通过“数据库链接(DB Link)”建立连接,再在 SQL 中引用远程对象。
下面按常见数据库分别说明,并给出示例与注意事项。
CREATE DATABASE LINK remote_db
CONNECT TO remote_user IDENTIFIED BY "password"
USING 'remote_tns';
SELECT *
FROM remote_table@remote_db;
SELECT a.id, b.name
FROM local_table a
JOIN remote_table@remote_db b
ON a.id = b.id;
✅ 特点
MySQL 没有 Oracle 那种 DB Link,常见替代方案:
CREATE TABLE remote_table (
id INT,
name VARCHAR(50)
)
ENGINE=FEDERATED
CONNECTION='mysql://user:pwd@remote_host:3306/db/remote_table';
然后像本地表一样查:
SELECT * FROM remote_table;
⚠️ 缺点
本地库查一次 → 远程库查一次 → 应用层 JOIN
例如 Java / Python / Go 中处理。
CREATE EXTENSION postgres_fdw;
CREATE SERVER remote_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host '127.0.0.1', dbname 'remote_db', port '5432');
CREATE USER MAPPING FOR local_user
SERVER remote_db
OPTIONS (user 'remote_user', password 'password');
IMPORT FOREIGN SCHEMA public
FROM SERVER remote_db
INTO public;
SELECT * FROM remote_table;
✅ 优点
SELECT *
FROM db2.dbo.table_name;
SELECT *
FROM [remote_server].[db_name].[dbo].[table_name];
SELECT *WHERE 下推)| 数据库 | 推荐方案 |
|---|---|
| Oracle | DB Link ✅ |
| MySQL | 应用层 / 中间件 ✅ |
| PostgreSQL | FDW ✅ |
| SQL Server | Linked Server ✅ |
如果你愿意,可以告诉我:
我可以直接给你可落地的 SQL + 架构建议。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。