C# 将数据从C Datatable插入SQL Server中的特定列

C# 将数据从C Datatable插入SQL Server中的特定列,c#,sql-server,datatable,ado.net,C#,Sql Server,Datatable,Ado.net,假设我的SQL Server表如下所示 Col1 | Col2 | Col3 | Col4 | Col5 Col X | Col Y | Col Z 我的数据表看起来像 Col1 | Col2 | Col3 | Col4 | Col5 Col X | Col Y | Col Z 如何将数据表中的值映射到SQL Server表中的特定列 datatable包含大量行,因此我希望避免使用逐行插入 实现这一目标的最佳方法是什么?这可能会对您有所帮助 SqlBulkCopy.WriteToSer

假设我的SQL Server表如下所示

Col1 | Col2 | Col3 | Col4 | Col5
Col X | Col Y | Col Z
我的数据表看起来像

Col1 | Col2 | Col3 | Col4 | Col5
Col X | Col Y | Col Z
如何将数据表中的值映射到SQL Server表中的特定列

datatable包含大量行,因此我希望避免使用逐行插入

实现这一目标的最佳方法是什么?

这可能会对您有所帮助

SqlBulkCopy.WriteToServer方法数据表

将提供的DataTable中的所有行复制到SqlBulkCopy的DestinationTableName属性指定的目标表 反对

这可能对你有帮助

SqlBulkCopy.WriteToServer方法数据表

将提供的DataTable中的所有行复制到SqlBulkCopy的DestinationTableName属性指定的目标表 反对


使用具有表值参数的存储过程。 创建与c数据表具有相同结构的用户定义表类型。 请注意,该类型的列必须与c数据表的列完全匹配,包括列的顺序

将类型dbo.MyTableType创建为表 ColX int,-必须与c数据表中的ColX数据类型相同 ColY nvarchar200,-必须与c数据表中的ColY数据类型相同 ColZ float-必须与c数据表中的ColZ数据类型相同 然后,您可以创建存储过程,在其中您将实际执行列映射:

创建过程InsertIntoMyTable @TableToInsert dbo.MyTableType只读-表值参数必须为只读! 像 插入MyTable Col1、Col2、Col3 选择ColZ、ColX、ColY 从@TableToInsert 去
使用具有表值参数的存储过程。 创建与c数据表具有相同结构的用户定义表类型。 请注意,该类型的列必须与c数据表的列完全匹配,包括列的顺序

将类型dbo.MyTableType创建为表 ColX int,-必须与c数据表中的ColX数据类型相同 ColY nvarchar200,-必须与c数据表中的ColY数据类型相同 ColZ float-必须与c数据表中的ColZ数据类型相同 然后,您可以创建存储过程,在其中您将实际执行列映射:

创建过程InsertIntoMyTable @TableToInsert dbo.MyTableType只读-表值参数必须为只读! 像 插入MyTable Col1、Col2、Col3 选择ColZ、ColX、ColY 从@TableToInsert 去
“避免使用逐行插入”是什么意思?使用带有表值参数的存储过程。@LeiYang在这种情况下,我可以循环insert命令将行逐个插入sql表中。我不想使用这种方法,因为我的datatable包含的行数超过1000行。1000行是一个大数字吗?你说的“避免使用逐行插入”是什么意思?使用带有表值参数的存储过程。@LeiYang在这种情况下,我可以循环insert命令将行逐个插入sql表中。我不想使用这种方法,因为我的datatable包含的行数超过1000行。1000行是一个大数字吗?这可以通过指定从datatable到SQL表的ColumnMappings来使用。这可以通过指定从datatable到SQL表的ColumnMappings来使用。