3

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

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

4

4 回答 4

1

您可以使用SQL Server 导入和导出向导来导入数据。SQL Server 导入和导出向导可以将数据复制到数据库和从数据库复制数据。

于 2013-03-13T02:55:08.643 回答
0

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

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

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

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

不过,恐怕根据您的问题,这也不完美。

你有选择,但遗憾的是没有像做一样简单RESTORE DATABASE

于 2013-03-13T03:01:38.803 回答
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 中的示例代码。希望这有帮助。:)

于 2013-03-13T03:23:02.603 回答
0

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

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

于 2013-03-14T09:38:03.197 回答