亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從兩個不同的服務器連接表

從兩個不同的服務器連接表

繁星coding 2019-09-03 16:34:18
我有兩個不同的服務器server1和server2,現在我已經db1在server1和db2中server2。我試圖像這樣在MySQL中加入這兩個表。Select a.field1,b.field2  FROM  [server1, 3306].[db1].table1 a  Inner Join [server2, 3312].[db2].table2 b  ON a.field1=b.field2  但我收到了錯誤。在MYSQL中是可能的。
查看完整描述

3 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

是的,它可以在MySQL中使用。

有問類似的問題以前也。您必須使用FEDERATED ENGINE來執行此操作。這個想法是這樣的:


您必須具有基于另一個遠程位置的表的聯合表才能使用您想要的方式。表的結構必須完全相同。


CREATE TABLE federated_table (

    id     INT(20) NOT NULL AUTO_INCREMENT,

    name   VARCHAR(32) NOT NULL DEFAULT '',

    other  INT(20) NOT NULL DEFAULT '0',

    PRIMARY KEY  (id),

    INDEX name (name),

    INDEX other_key (other)

)

ENGINE=FEDERATED

DEFAULT CHARSET=latin1

CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';


查看完整回答
反對 回復 2019-09-03
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

這是一種破解,它不是一個連接,但我使用bash函數讓我覺得我在做跨服務器查詢:


顯式版本:


tb2lst(){

    echo -n "("

    tail -n +2 - | paste -sd, | tr -d "\n"

    echo ")"

}


id_list=$(mysql -h'db_a.hostname' -ume -p'ass' -e "SELECT id FROM foo;" | tb2lst)

mysql -h'db_b.hostname' -ume -p'ass' -e "SELECT * FROM bar WHERE foo_id IN $id_list"


+--------|-----+

| foo_id | val |

+--------|-----+

| 1      | 3   |

| 2      | 4   |

+--------|-----+

我寫了一些包裝函數,我保存在我的bashrc中,所以我的觀點只是一個命令:


db_b "SELECT * FROM bar WHERE foo_id IN $(db_a "SELECT id FROM foo;" | tb2lst);"


+--------|-----+

| foo_id | val |

+--------|-----+

| 1      | 3   |

| 2      | 4   |

+--------|-----+

至少對于我的用例,這將兩個查詢快速拼接在一起,輸出等同于連接,然后我可以將輸出管道輸出到任何需要它的工具中。

查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關注
  • 510 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號