我们知道,oracle 提供的有dblink 的功能,那mysql 如何实现跨库查询呢?
在日常的开发中经常进行跨数据库进行查询数据。
同服务器下跨数据库进行查询在表前加上数据库名就可以查询到数据。
mysql跨服务器进行查询提供了FEDERATED引擎进行映射表,然后进行查询。
mysql数据库federated引擎是关闭的,首先需要先启用该引擎。mysql执行show engines命令查看引擎状态。
show engines;
Windows下找到my.ini修改mysql配置。该文件是隐藏在ProgramData文件夹,在该地址:C:\ProgramData\MySQL\MySQL Server 5.7,可以通过%ProgramData%查找该隐藏文件件。
打开my.ini文件,在[mysqld] 下加上federated
在mysql中创建远程服务器数据库中的需要映射的表,映射表名称可以随意命名,但是数据结构必要一样。
CREATE TABLE `pes_value_result` ( `ID` varchar(32) NOT NULL COMMENT '量表常模表', `AGE` int(11) DEFAULT NULL COMMENT '年龄', `DIVERGESCORE` varchar(11) DEFAULT NULL COMMENT '分数 默认为0', `MAXSCORE` varchar(11) DEFAULT NULL COMMENT '最大粗分', `MINSCORE` varchar(11) DEFAULT NULL COMMENT '最小粗分', `SCALEVALUE` varchar(11) DEFAULT NULL COMMENT '量表常量值', `SEX` varchar(11) DEFAULT NULL COMMENT '性别 0女1男', `STANDARDSCORE` varchar(255) DEFAULT NULL COMMENT '标准分', `FACTOR` varchar(255) DEFAULT NULL COMMENT '因子名称', `MAXAGE` varchar(11) DEFAULT NULL COMMENT '最大年龄', `MINAGE` varchar(11) DEFAULT NULL COMMENT '最小年龄', `SCALENAME` double DEFAULT NULL COMMENT '量表名称(未使用)', `SCALEID` varchar(255) DEFAULT NULL COMMENT '量表id(未使用)', `CREATEDATE` varchar(255) DEFAULT NULL COMMENT '信息创建时间', PRIMARY KEY (`ID`) USING BTREE ) ENGINE=FEDERATED CONNECTION='mysql://abc:[email protected]:3306/pes/pes_result';
注意:ENGINE=FEDERATED,使用federated引擎,修改用户名,密码,地址,端口号,数据库,表
参考:
mysql实现跨服务器查询数据