2015-12-26 23 views
-3

查詢數據

有在不同服務器上的兩個不同的數據庫兩種觀點,我要加入他們的行列,使幾個疑問。

我有什麼選擇?

我該怎麼辦?

加入的觀點在同一個數據庫工作。

SELECT * FROM view1 
UNION ALL 
SELECT * FROM view2 

感謝

+0

請參閱此鏈接 http://stackoverflow.com/questions/ 5145637 /通過連接查詢數據 - 兩個表中的數據庫在不同的服務器上 – Capslock

+0

@Capslock以下鏈接的表,但我要求fo r views.I已經按照鏈接,但我的代碼不起作用。 –

+0

是否嘗試在mysql中使用聯合存儲? –

回答

4

你可以在MySQL中使用聯合功能。

  1. 在你的MySQL啓用聯合

登錄到MySQL的CLI以root(或具有足夠權限的另一個帳戶)。

類型:show engines; 你應該看不到任何聯邦引擎在這一點上,像這樣:

mysql> show engines; 
+------------+---------+------------------------------------------------------------+--- -----------+------+------------+ 
| Engine  | Support | Comment             | Transactions | XA | Savepoints | 
+------------+---------+------------------------------------------------------------+--- -----------+------+------------+ 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables      | NO    | NO | NO   | 
| CSV  | YES  | CSV storage engine           | NO   | NO | NO   | 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance  | NO   | NO | NO   | 
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys | YES   | YES | YES  | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables | NO   | NO | NO   | 
+------------+---------+------------------------------------------------------------+--------------+------+------------+ 
5 rows in set (0.00 sec) 

爲了使盟員引擎,鍵入以下內容:

install plugin federated soname 'ha_federated.so'; 

不介意,如果你得到ERROR 1125(HY000):功能「聯合」已存在

現在可以行「聯合」安全地添加到/etc/my.cnf文件裏是這樣的:

[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
user=mysql 
# Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=0 
federated 

[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 

重新啓動mysqld(服務mysqld restart等)

重新啓動後,請回到mysql CLI。

類型'show engines;' 您現在應該看到FEDERATED引擎可用,並且支持爲YES。

mysql> show engines; 
+------------+---------+------------------------------------------------------------+--------------+------+------------+ 
| Engine  | Support | Comment             | Transactions | XA | Savepoints | 
+------------+---------+------------------------------------------------------------+--------------+------+------------+ 
| FEDERATED | YES  | Federated MySQL storage engine        | NO   | NO | NO   | 
| CSV  | YES  | CSV storage engine           | NO   | NO | NO   | 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance  | NO   | NO | NO   | 
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys | YES   | YES | YES  | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables | NO   | NO | NO   | 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables      | NO   | NO | NO   | 
+------------+---------+------------------------------------------------------------+--------------+------+------------+ 
6 rows in set (0.00 sec) 

重啓MySQL

service mysqld status 
service mysqld stop 
service mysqld start 
  • 在DB2
  • 在DB1中創建DB1和視圖2廠景,

    CREATE table federated_table (
    id int not null, 
    name VARCHAR(32) NOT NULL DEFAULT '' 
    ) 
    ENGINE=FEDERATED 
    
    CONNECTION='mysql://user_name:[email protected]_server_name:3306/db2/view2'; 
    

    注federated_table和view2必須使用相同的列名稱並鍵入

  • 執行SELECT * FROM db2.federated_table;

  • 執行select * from db1.view1 union all select * FROM db1.federated_table;

  • 參見:http://eves4code.blogspot.in/2015/12/querying-data-by-joining-two-views-in.html