仅恢复SQL数据库数据

时间:2013-03-13 02:51:35

标签: sql sql-server

我有两个具有完全相同架构的数据库。我想从一个中导出数据并在另一个上复制它。我不希望删除并重新创建表,只需删除目标数据库中的所有数据,并将其替换为从源数据库导出的数据。

我认为这是可能的吗?目标数据库位于权限非常有限的客户端环境中。

4 个答案:

答案 0 :(得分:1)

您可以使用SQL Server Import and Export Wizard导入数据。 SQL Server导入和导出向导可以将数据复制到数据库或从数据库复制数据。

答案 1 :(得分:0)

您可以使用SSIS包,并且有些产品可以为您完成。我已经使用了它的特定产品(Red Gate的SQL Data Compare)和几个版本的源代码控制(尽管对于后者,实际上只用于“静态”查找数据)。

即使这些选项通常只为您执行INSERTS等脚本编写。

您特别使用“复制”一词;您是否考虑过在数据库之间进行实际的快照复制:

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

但是,根据你的问题,这也不完美,我很害怕。

你有选择,但遗憾的是没有像RESTORE DATABASE

那样简单

答案 2 :(得分: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中的示例代码。希望这有帮助。 :)

答案 3 :(得分:0)

如果可以链接两个数据库服务器,那么可以使用INSERT和SELECT语句从SSMS执行此操作。

Here是一篇更详细地描述链接服务器的文章。