집 >데이터 베이스 >MySQL 튜토리얼 >C#을 사용하여 매개변수화된 데이터를 SQL Server에 효율적으로 대량 삽입하려면 어떻게 해야 합니까?
C#을 사용하여 SQL Server에 대량 데이터 삽입 최적화
대규모 데이터 세트를 처리하려면 효율적인 데이터베이스 삽입 기술이 필요한 경우가 많습니다. 웹 소스 데이터를 처리할 때 매개변수화된 쿼리는 보안과 성능을 위해 매우 중요합니다. 이 문서에서는 일반적이고 비효율적인 행별 접근 방식에 대한 우수한 방법을 보여줍니다.
비효율적인 단일 행 삽입 문제 해결
개별 INSERT
문(예: INSERT INTO DATABASE('web',@data)
)을 사용한 반복 삽입은 속도가 느리고 SQL 삽입에 취약합니다.
해결책: 테이블 값 매개변수(TVP)
SQL Server 2008 이상 버전에서는 TVP(테이블 값 매개 변수)를 지원하여 보안을 위해 매개 변수화를 유지하면서 대량 삽입을 위한 매우 효율적인 방법을 제공합니다.
1. 사용자 정의 테이블 유형(UDT) 정의
대상 데이터베이스 테이블의 구조를 미러링하는 UDT를 생성하는 것부터 시작하세요.
<code class="language-sql">CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO</code>
2. TVP를 사용하여 저장 프로시저 만들기
다음으로 TVP를 허용하는 저장 프로시저를 만듭니다.
<code class="language-sql">CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- READONLY is crucial for TVPs! ) AS INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable GO</code>
3. TVP를 사용한 C# 구현
C# 코드는 DataTable
을 활용하여 삽입 전 데이터를 보관합니다.
<code class="language-csharp">DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(int)); dt.Columns.Add("Col2", typeof(string)); // Populate the DataTable with your data here using (var con = new SqlConnection("ConnectionString")) { using (var cmd = new SqlCommand("MyProcedure", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MyTable", dt); // Simplified parameter addition con.Open(); cmd.ExecuteNonQuery(); } }</code>
이 접근 방식은 TVP를 활용하여 개별 INSERT
문에 비해 대량 데이터를 훨씬 빠르고 안전하게 삽입할 수 있습니다. AddWithValue
을 사용하면 매개변수 처리가 단순화됩니다. "ConnectionString"
을 실제 연결 문자열로 바꿔야 합니다.
위 내용은 C#을 사용하여 매개변수화된 데이터를 SQL Server에 효율적으로 대량 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!