2012-05-18 174 views
1

我從MSSQL DB(「A」)獲取數據,並使用MSSQL DB中創建的日期插入MySQL DB(「B」)。我用簡單的邏輯來做這件事,但要做到這一點,必須有更快更有效的方式。下面是涉及的邏輯順序:同時查詢MySQL和MSSQL數據庫

  1. 爲MSSQL DB創建一個連接,爲MySQL DB創建一個連接。

  2. 從A獲取符合日期範圍標準的所有數據。

  3. 檢查以查看哪個所獲得的數據不存在於B.

  4. 插入這些新的數據到B.

可以想象,步驟2基本上是一個循環,這可以很容易地將時間限制在服務器上,並且我覺得必須有一種方法可以更快,並且在第一次查詢時進行。任何人都可以指出我正確的方向來實現這一目標?你能否與這兩個數據庫建立「一個」連接並做下面的事情?

SELECT * FROM A.some_table_in_A.some_column WHERE 
    "it doesn't exist in" B.some_table_in_B.some_column 

回答

0

如果我理解你的問題是正確的,那麼你只是試圖將MSSQL DB中的東西移動到MySQL DB中。我還假設您正在使用某種過濾條件進行遷移。如果這是正確的,你可以嘗試在MSSQL中使用存儲過程,它可以使用分佈式查詢來查詢MySQL數據庫。然後,您可以使用該存儲過程在數據庫端執行循環或檢查,並且前端服務器只需要建立一個連接。

3

一個linked server可能適合這個

鏈接服務器允許訪問對OLE DB數據源的分佈,異構 查詢。在創建鏈接服務器之後,可以針對此服務器運行 分佈式查詢,並且查詢可以從多個數據源中連接表中的 。如果鏈接的服務器是 定義爲SQL Server實例,則可以執行遠程存儲過程 。

退房this HOWTO以及

0

如果MySQL數據庫主鍵定義,則可以至少跳過步驟3(「檢查以查看哪個所獲得的數據不存在於B」)。使用INSERT IGNORE INTO...,它將嘗試插入所有記錄,靜默跳過已存在主鍵記錄的記錄。