繁体   English   中英

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

[英]Insert data into specific columns in SQL Server from C# Datatable

假设我的SQL Server表看起来像

Col1 | Col2 | Col3 | Col4 | Col5

我的数据表看起来像

Col X | Col Y | Col Z

如何将数据表中的值映射到SQL Server表中的特定列?

数据表包含大量行,因此我想避免使用逐行插入。

做到这一点的最佳方法是什么?

这可能对您有帮助

SqlBulkCopy.WriteToServer方法(数据表)

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

https://msdn.microsoft.com/zh-CN/library/ex21zs8x(v=vs.110).aspx

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

CREATE TYPE dbo.MyTableType AS TABLE
(
    ColX int, -- Must be the same data type of ColX in your c# data table
    ColY nvarchar(200), -- Must be the same data type of ColY in your c# data table
    ColZ float -- Must be the same data type of ColZ in your c# data table
)

然后,您可以创建存储过程,在其中您将实际进行列的映射:

CREATE PROCEDURE InsertIntoMyTable
(
    @TableToInsert dbo.MyTableType READONLY -- Table valued parameters must be readonly!
)
AS
    INSERT INTO MyTable (Col1, Col2, Col3)
    SELECT ColZ, ColX, ColY
    FROM @TableToInsert
GO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM