2011-05-24 93 views
1

我從來沒有做過類似的事情。用外部表連接數據庫

我有一個系統,我需要將我的數據與外部數據(在另一個數據庫中)相關聯。 我的首選是獲取這些數據並創建自己的表格,但在這種情況下,當其他數據庫更新時,我的個人表格將被廢棄。

所以,基本上我需要使我的表與外部表同步,或者只是獲取外部數據值。

我不知道如何連接和關聯來自十個外部數據庫的數據。

我需要檢查一個用戶是否基本上在其他網站註冊。

任何幫助?

回答

3

我非常喜歡做類似的事情。

Easiset我發現的方式是拉數據,雖然我在我的項目中做了雙向同步,但你沒有提到這個,所以我想它是一個你正在瞄準的數據拉。

您需要在其他服務器上擁有用戶帳戶,並且該帳戶需要使用ip而不是'localhost'創建。你將通過遠程主機的ip而不是ususal localhost通過mysql客戶端從你的端點連接。

請參閱this page瞭解更多信息。

如果像我一樣,必須連接到不同的數據庫服務器類型,我建議使用數據庫抽象庫來緩解跨不同SQL服務器以無縫方式管理數據。我選擇了Zend_db組件,與Zend_config一起使用standaline,因爲它們支持MySQL和MSSQL。

更新 - 使用代理DB訪問關鍵任務數據

根據項目的範圍,如果數據不能訪問直接從遠程數據庫中,有不同的可能性。爲了回答你的評論,我會告訴你我們是如何解決目前項目中的相同問題的。客戶端有一個很大的MSSQL數據庫,它是關鍵業務應用程序,會計,發票,庫存,一切都由一個與MSSQL綁定的大應用程序來處理。我的任務是安裝一個CRM,並將他的MSSQL任務關鍵型應用程序的客戶同步到CRM中,順便說一句,在MySQL上運行。

我不想直接從我的客戶關係管理系統訪問這些數據,這個客戶關係管理系統不應該觸及他們的主要MSSQL數據庫,我當然不願意承擔一些事情的責任,即使在理論上這不應該發生,實際上理論往往是毫無價值的。我給予(並已實施)的建議是在它們的最後建立一個代理數據庫。位於同一MSSQL實例上的該數據庫每晚都有一個可以複製第二個數據庫中的數據的任務。這一個,我可以遠程訪問。用戶是在MSSQL上創建的,只需訪問代理服務器,並且僅從一個IP接受連接。

我的scipt必須同步兩種方式,所以在我的情況下,我每晚將修改後的記錄從MSSQL「推」到crm,並在代理數據庫中「拉」添加的CRM記錄。實習生通過代理中的新記錄電子郵件通知他們更新到他們的MSSQL應用程序。希望這很清楚,我意識到很難用幾行清楚地表達。如果您有其他問題,請隨時提問。

祝你好運!

+0

它可以自動化在另一個數據庫中導出表,併爲我的數據庫每週導入?例如?正確?其他網站沒有任何Api,並且可能是我訪問數據的唯一方式只是一個pdf ...數據是敏感的。直接連接可能不允許:( – user455318 2011-05-24 22:43:02

+0

我添加了關於我們如何處理這種情況的更新。 – stefgosselin 2011-05-25 01:35:35

1

您必須下載數據庫所需部分(或全部)的備份(gzip,zip)並將其上載到另一個數據庫。

Btw。 cronjobs在這一點上不會幫助你,因爲你無法從外部訪問任何數據庫。

+0

他說他不希望在更新其他數據時廢棄他的數據 – babonk 2011-05-24 22:33:00

+0

cronjobs ca可用於獲取數據的腳本。 – stefgosselin 2011-05-24 22:38:52

1

其他網站是否有訪問此類信息的API?他們有能力建造一個嗎?如果是這樣,那將是最好的方法。

否則,我認爲你從他們的數據庫中獲取數據的方式是直接查詢它。這可以起作用,只需創建一個mysql_connect到他們的位置並查詢它就像它是你自己的數據庫一樣。注意:他們的數據庫必須設置爲與外部連接一起工作才能使用此方法。