将行批量插入 SQL Server 的最快方法是使用 Table-Valued Parameters (TVP)。TVP 是一种用户自定义的表类型,可以在存储过程中使用,以将多行数据一次性传递到 SQL Server。
以下是使用 TVP 批量插入数据的步骤:
CREATE TYPE dbo.MyTableType AS TABLE (
Column1 INT,
Column2 VARCHAR(50),
Column3 DATETIME
)
CREATE PROCEDURE dbo.BulkInsertData
@MyTableVariable dbo.MyTableType READONLY
AS
BEGIN
INSERT INTO MyTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM @MyTableVariable
END
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Column1", typeof(int));
dataTable.Columns.Add("Column2", typeof(string));
dataTable.Columns.Add("Column3", typeof(DateTime));
// Add rows to the dataTable
using (SqlCommand command = new SqlCommand("dbo.BulkInsertData", connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = command.Parameters.AddWithValue("@MyTableVariable", dataTable);
parameter.SqlDbType = SqlDbType.Structured;
parameter.TypeName = "dbo.MyTableType";
command.ExecuteNonQuery();
}
}
这种方法可以显著提高插入多行数据的速度,特别是在处理大量数据时。
领取专属 10元无门槛券
手把手带您无忧上云