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