将一个表的内容复制到另一个数据库中的另一个表

时间:2017-11-24 13:48:10

标签: c# entity-framework

我有一个类似于(称之为UserTable

的SQL表
+--------+-----------+----------+
| UserId | FirstName | LastName |
+--------+-----------+----------+
|    123 | Bob       | Smith    |
|    456 | John      | Doe      |
+--------+-----------+----------+

在另一台服务器上,我有一张桌子(称之为UserBackupTable

+----------+--------+-----------+----------+
| Location | UserId | FirstName | LastName |
+----------+--------+-----------+----------+
| A        |    123 | Bob       | Smith    |
| B        |    456 | John      | Doe      |
+----------+--------+-----------+----------+

除了添加一列(Location)之外,这两个表是相同的。我希望以比

更好的方式备份/复制UserTableUserBackupTable
var dataToCopy = userDb.UserTable.Select(user => new UserBackup
{
    Location = _location,
    FirstName = user.FirstName,
    LastName = user.LastName
}).ToList();
backupDb.UserBackups.AddRange(dataToCopy);

当我有40多列需要手动输入时,这对我来说有效但不是很有效。如果需要,这些是数据库第一模型。

1 个答案:

答案 0 :(得分:-1)

您是否可以在数据库层执行此操作,而不是通过ORM执行此操作,例如

SELECT *
INTO [backupDb].[dbo].[UserBackups]
FROM [dbo].[UserTable]    

您需要根据操作方式修改上述内容,例如:每次递增或重新创建整个备份表,具体取决于数据的大小(只需确保删除现有表并选择作为事务的一部分替换它),但您可以通过SQL Server代理等自动化它。

请注意,SELECT INTO会创建一个新的目标表,因此不适合增量备份方法。