2011-05-10 127 views
0

我有一個表名學生的字段,名稱和在my-sql數據庫中滾動。另外,我在MS-SQL數據庫中有一個同名表名的學生,其中包含字段,名稱和卷。發送數據從MySQL到MS-SQL數據庫

當一個值插入到我的MySQL數據庫student表中時,我需要自動將相同的值插入到MS-SQL數據庫student表中。

+0

首先,與MySQL和SQL Server相似的是數據類型 - 它們仍然是不同的供應商。這就是爲什麼你所要求的是非常不尋常的......如果你以另一種方式--SQL Server到MySQL,使用鏈接服務器實例很容易。 – 2011-05-10 03:29:13

+0

這意味着。它不可能將數據從MySQL遷移到MS-SQL服務器??請提供建議。也是什麼是鏈接服務器 – riad 2011-05-10 03:38:30

回答

1

爲什麼你使用兩個獨立的數據庫來做同樣的事情?你不能只選一個嗎? 如果您只是試圖導出和導入數據,您應該能夠從一個數據庫導出爲csv並導入到另一個數據庫中,然後僅使用您需要的數據庫。

如果不是,我想你可以編寫一個包裝兩個數據庫對象的類,並實際執行兩個數據庫上的每個查詢。
例如:

public class database 
{ 

public DbConnection mySqlConnection; 
public DbConnection sqlConnection; 
/// <summary> 
/// open two db connections 
/// </summary> 
    public database() 
    { 
     mySqlConnection =//string that will open the mysql 

     mySqlconnection = //insert string will open the sql server database 
    } 

    public excecuteNonQuery(String SQL) 
    { 
    //cmd1 = mysql command 
    //cmd2 = mssql command 

    cmd1.excecute(SQL); 
    cmd2.execute(SQL); 

    } 
} 

而剛剛創建句柄製備命令和插入數據,以使得操作在同一時間上兩個數據庫中執行的功能。我不知道任何將mysql數據庫複製到mssql數據庫的方法。

+0

感謝您的答覆...如果數據遷移不可能..然後我們必須去那solution.Basically,它是最後的解決方案.. – riad 2011-05-10 04:21:07

1

你可以有一個經常運行的cron來插入它還沒有看到的記錄。

// Assuming the primary key is an id int auto_increment 
startId = getLastIdFromPreviousRun(); 
lastId = 0; 
offset = 0; 
while(true) { 
    mysqlrs = mysqlQuery(
     "SELECT * FROM users WHERE id > ? ORDER BY id LIMIT ?, 1000", 
     startId, 
     offset 
    ); 
    if (!mysqlrs || mysqlrs.count() == 0) 
     break; 
    foreach(mysqlrs as mysqlrow) { 
     mssqlInsert('users', mysqlrow); 
     lastId = mysqlrow['id']; 
    } 
    offset += 1000; 
} 
if (lastId) { 
    setLastIdForNextRun(lastId); 
} 
+0

感謝您的指導... – riad 2011-05-10 04:39:41