2013-03-13 60 views
1

我有兩個完全相同的模式的數據庫。我想從一個導出數據並在另一個上覆制它。我不希望刪除並重新創建表,只需將目標數據庫中的所有數據打包並將其替換爲從源數據庫導出的數據即可。恢復SQL數據庫只有

我認爲這是可能的嗎?目標數據庫位於具有非常有限權限的客戶端環境中。

回答

1

您可以使用SQL Server Import and Export Wizard導入數據。 SQL Server導入和導出嚮導可以將數據複製到數據庫和從數據庫複製數據。

+0

謝謝,我會給它一個。 – pfeds 2013-03-13 03:21:27

0

你可以爲它使用SSIS包,並且那裏有產品會爲你做。我已經使用了一個特定的產品(Red Gate的SQL數據比較)和一些源代碼控制版本(儘管後者只針對「靜態」查找數據)。

即使這些選項通常只爲INSERTS等進行腳本編寫。

您特別使用單詞「replicate」;你看着做你的數據庫之間的實際快照複製:

http://technet.microsoft.com/en-us/library/ms151734%28v=sql.105%29.aspx

這也是沒有根據您的問題完美,雖然,我害怕。

你有選擇的,但遺憾的是沒有那麼簡單,只是在做RESTORE DATABASE

0

我不知道在SQL。但你可以使用像php等第三個應用程序來執行數據傳輸。拳頭收集表中的所有數據。對於表中的每個數據,請在目標表中進行查找。如果目標表包含與當前源數據相同的數據,請更新。否則,創建一個新的。在PHP中可能是這樣的:

$source = mysql_query("SELECT * FROM source_table"); 

while ($row = mysql_fetch_assoc($source)) { 
    $target = mysql_query("SELECT * FROM target_table WHERE id='" . $row["id"] . "'"); 
    $tr_row = mysql_num_rows($target); 

    if ($tr_row > 0) { 
     $result = mysql_query("UPDATE target_table SET name='" . $row["name"] . "' age='" . $row["age"] ."' WHERE id='" . $row["id"] . "'"); 
    } else if ($tr_row <= 0) { 
     $result = mysql_query("INSERT INTO target_table (name,age) VALUES ('" . $row["name"] . "','" . $row["age"] . "'"); 
    } 
} 

這只是PHP和MySQL中的示例代碼。希望這個幫助。 :)

+0

有趣的想法,謝謝。 – pfeds 2013-03-13 05:33:39

0

如果您可以鏈接兩個數據庫服務器,那麼您可以使用INSERT和SELECT語句從SSMS執行此操作。

Here是一篇更詳細地描述鏈接服務器的文章。