我需要以編程方式(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複製獨特的記錄