使用SqlBulkCopy将DataTable中的列映射到SQL表
我想知道如何在将数据添加到数据库之前将数据库表中的列映射到c#中的数据表。
using (SqlBulkCopy s = new SqlBulkCopy(conn)) { s.DestinationTableName = destination; s.WriteToServer(Ads_api_ReportData); }
你可能需要一些东西
public void BatchBulkCopy(DataTable dataTable, string DestinationTbl, int batchSize) { // Get the DataTable DataTable dtInsertRows = dataTable; using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity)) { sbc.DestinationTableName = DestinationTbl; // Number of records to be processed in one go sbc.BatchSize = batchSize; // Add your column mappings here sbc.ColumnMappings.Add("field1","field3"); sbc.ColumnMappings.Add("foo","bar"); // Finally write to server sbc.WriteToServer(dtInsertRows); } }
参考: 如何使用SqlBulkCopyColumnMappingCollection? 。 。
Seel也是https://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy
知道如果源查询(或表)中的列和目标表具有相同的名称并且顺序完全相同 ,那么可能很有用, 因此不需要显式写出映射 ,因为SqlBulkCopy
将创建具有此默认顺序的默认映射。
这成了一个常见的任务,我为它写了这个帮手:
public static void AutoMapColumns(SqlBulkCopy sbc, DataTable dt) { foreach (DataColumn column in dt.Columns) { sbc.ColumnMappings.Add( new SqlBulkCopyColumnMapping(column.ColumnName, column.ColumnName)); } }
由于我自己创建了DataTable
,因此我将其列命名为与SQL表相同。
使用ColumnMappings :
s.ColumnMappings.Add("Name", "Name"); s.ColumnMappings.Add("Address", "Address");
Add on ColumnMappings集合方法允许您将列从源表映射到目标表。 ColumnMappings.Add方法接受四种不同的方式来映射列。
SQLBulkCopy对两列的数据类型都非常严格,在将它添加到ColumnMappings集合时必须考虑这些列
上述就是C#学习教程:使用SqlBulkCopy将DataTable中的列映射到SQL表分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991706.html