我有两个具有完全相同架构的数据库。我想从一个中导出数据并在另一个上复制它。我不希望删除并重新创建表,只需删除目标数据库中的所有数据,并将其替换为从源数据库导出的数据。
我认为这是可能的吗?目标数据库位于权限非常有限的客户端环境中。
答案 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是一篇更详细地描述链接服务器的文章。