2013-09-30 80 views

回答

3

目前沒有MySQL equavilent方法,請參閱this後。 您的方案然而四種可能的解決方法:查詢外部表的時候

  • 使用完全合格表-名。 MySQL支持dbname.tablename`語法來訪問 當前數據庫作用域以外的表。這要求當前連接的用戶 有權從另一個物理數據庫中請求的 表讀取數據。
  • 如果您的外部數據庫運行在不同的MySQL服務器 (在同一臺機器上或通過網絡連接),您可以使用複製來不斷更新遠程 表的只讀副本。只有在運行兩個獨立的MySQL實例時纔可以進行復制。
  • 使用FEDERATED MySQL storage engine虛擬地將表 導入到當前數據庫中。由於 憑證是在使用 FEDERATED存儲引擎時與CREATE TABLE語句一起提供的,因此這會提升將 當前用戶訪問權限授予第二個數據庫的要求。這也適用於在不同的物理服務器或不同的MySQL實例上運行 的數據庫。我認爲 這將是性能最差的選項,並且確實有一些 限制 - 或多或少取決於您的使用場景 和您的要求。
  • 這是一個擴展方法1,而不必每次從 外部表請求信息時指定 完全限定表 - 名字,你根本就創建一個基於當前的 數據庫中的視圖簡單選擇<>從 <>。 <>。這與FEDERATED-method 的工作方式類似,但僅限於同一個MySQL實例上的表。

這將是有益的http://www.pythian.com/blog/how-to-access-mysql-from-oracle-with-odbc-and-sql/

+0

本答案的99%複製自https://stackoverflow.com/a/1566137 –

1

Oracle的RDBMS和MySQL RDBMS是兩個完全不同的服務器。即使存儲數據和實現SQL語言以管理它們沒有共同之處。這也意味着你不能從MySQL服務器引用Oracle服務器,反之亦然。你甚至不能從另一個MySQL服務器尋址。所有的工作都是針對連接到的單個服務器(從可視客戶端如MySQL Workbench或命令行客戶端)完成的。

2

您可以通過Perl DBIx :: MyServer代理使用MySQL聯合表直接從MySQL內部訪問Oracle(或其他DBMS)信息。這種方法大約在2007年左右開始:在這裏可以很好地逐步完成設置和使用: http://ftp.nchu.edu.tw/MySQL/tech-resources/articles/dbixmyserver.html 寫起來不僅表明直接在內部使用'select'語句MySQL到postgres和sqlite本地表,但也使用直接從MySQL環境內執行的查詢插入到這些表中。 Perl模塊可在這裏找到:http://search.cpan.org/~philips/DBIx-MyServer-0.42/lib/DBIx/MyServer.pm 祝你好運!

+0

第一個鏈接現在不可用(禁止)。我從檔案中得到這個:http://web.archive.org/web/20141113060908/http://ftp.nchu.edu.tw/MySQL/tech-resources/articles/dbixmyserver.html – Memochipan