我需要以编程方式(ADO.Net)将记录从一个数据库中的表复制到另一个服务器上另一个数据库中的表中。 这与"How can I copy data records between two instances of an SQLServer database"非常相似,不同之处在于我不允许创建到目标服务器的链接,因此该问题的接受答案对我无效。如何在SQLServer数据库的两个实例之间复制数据记录
1
A
回答
0
下面是我做到的。感谢其他响应者的灵感。如果两个表的模式相同,则构建映射的代码不是必需的。
public void CopyTables(string sourceConnectionString, string destConnectionString)
{
string sql = "Select * From SourceTable";
using (SqlConnection sourceConn = new SqlConnection(sourceConnectionString))
using (SqlCommand sourceCmd = new SqlCommand(sql, sourceConn)) {
sourceConn.Open();
using (SqlDataReader reader = sourceCmd.ExecuteReader())
using (SqlBulkCopy copier = new SqlBulkCopy(destConnectionString)) {
copier.DestinationTableName = "DestinationTable";
copier.BulkCopyTimeout = 300;
DataTable schema = reader.GetSchemaTable();
copier.ColumnMappings.Clear();
foreach (DataRow row in schema.Rows) {
copier.ColumnMappings.Add(row["ColumnName"].ToString(), row["ColumnName"].ToString());
}
copier.WriteToServer(reader);
}
}
}
}
0
可以使用SqlBulkCopy类
0
通过santiiii建议SqlBulkCopy类是非常有效的,但它创建了一个非日志记录操作。我不得不这样做一次,但我的目标数据库参与了复制,所以我需要将操作完全记录下来。我最终做的是从源数据库中选择一个数据集。
Select * from SourceDatabaseTable where (some clause to get the right records)
然后用这个说法
Select * from DestinationDatabaseTable where 1<>1
然后,我有两个数据集建立从目标表一个空的数据集。第一个是我想要复制的记录,第二个是空的。接下来,我只是做了一个嵌套的foreach循环来将记录从一个数据集复制到另一个数据集。这里是核心复制函数的伪代码:
foreach(datarow sourcedr in sourcetable)
{
datarow destdr = destdatatable.createrow();
foreach(datacolumn in sourcedatatable)
{
destdr[datacolumn]=Sourcedr[datacolum];
}
}
最后,我只是使用数据适配器来提交目标数据库上的更改。
相关问题
- 1. 如何在SQLServer数据库的两个实例之间复制数据记录
- 2. 使用EF从两个数据库之间复制记录
- 3. 仅在两个数据库之间复制数据
- 4. 两个服务器实例之间复制数据
- 5. TSQL:如何在SQLServer实例之间移动数据?
- 6. 如何在Azure SQL数据库实例之间移动数据
- 7. 如何在SQLServer数据库中复制大量数据集
- 8. 如何在两个日期和时间之间从数据库获取记录?
- 9. 复制两个不同的记录之间大数据在最快的方式
- 10. 在两个不同的mysql数据库的表之间复制数据
- 11. 如何在SQLite中的两个表之间复制数据?
- 12. 两个SolrCloud实例之间的复制
- 13. 在两个网站目录之间复制数据
- 14. 检索两个工作日之间的数据库记录
- 15. 如何将记录从一个数据库复制到另一个数据库?
- 16. 如何在两个数据库之间共享(使用)数据?
- 17. 从sqlite中的两个数据库复制记录
- 18. 使用NHibernate在多个数据库之间复制实体
- 19. 如何匹配数据库中两个表之间的数据?
- 20. 如何在两个Oracle实例之间创建数据库链接
- 21. 复制2个mysql数据库之间的特定数据
- 22. sqlserver express数据库复制选项
- 23. 数据库之间的复制表
- 24. SQLserver数据库两台服务器之间的同步
- 25. Influxdb在Influxdb中的数据库之间移动复制数据
- 26. 复制关系数据库记录
- 27. 用linq复制数据库记录
- 28. 绑定两个数据库的记录
- 29. 从具有多个数据库的实例复制单个Redis数据库
- 30. 在两个独立的数据库中的两个相等的数据库之间的SQL复制独特的记录