티스토리 뷰
대량의 데이터를 MS-SQL에 인서트 시킬때.
Bulk Insert 를 사용해서 인서트를 해보자.
일반 인서트보다 속도가 어마어마하게 빠를테니.
벌크인서트는 DataTable 이나 StreamReader 클래스를 사용해서 쓸수 있는데
본 포스팅에서는 DataTable을 이용해서 인서트를 한다.
우선 샘플 데이블 구조는 아래와 같다. 아주 간단하게 TEXT 컬럼에 데이터를 백만건을 넣어보자.
CREATE TABLE [dbo].[BULK](
[TEXT] [varchar](50) NULL
) ON [PRIMARY]
소스
1: using System;
2: using System.Collections.Generic;
3: using System.Data;
4: using System.Data.SqlClient;
5: using System.Linq;
6: using System.Text;
7: using System.Threading.Tasks;
8: 9: namespace BulkInsert
10: {11: class Program
12: {13: static void Main(string[] args)
14: {15: long start_time;
16: long end_time;
17: 18: start_time = DateTime.Now.Ticks;19: using (SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial Catalog=SampleDb;User ID=sa;Password=@@@@"))
20: { 21: sqlconn.Open(); 22: 23: DataTable dt = new DataTable("[BULK]");
24: DataColumn col = new DataColumn();
25: // col.DataType = Type.GetType("string");
26: col.ColumnName = "TEXT";
27: 28: dt.Columns.Add(col); 29: 30: for (int i = 0; i < 1000000; i++)
31: { 32: DataRow dr = dt.NewRow();33: dr["TEXT"] = i + " 번째 값";
34: dt.Rows.Add(dr); 35: } 36: 37: using (SqlBulkCopy s = new SqlBulkCopy(sqlconn))
38: { 39: s.DestinationTableName = dt.TableName;40: s.ColumnMappings.Add("TEXT", "TEXT");
41: s.WriteToServer(dt); 42: } 43: } 44: 45: end_time = DateTime.Now.Ticks; 46: 47: TimeSpan timespan = new TimeSpan(end_time - start_time);
48: Console.WriteLine(timespan.Seconds.ToString()); 49: 50: Console.Read(); 51: } 52: } 53: }WriteToServer 에 DataTable 객체나, StreamReader 객체를 넣어주면 된다.
실제로 아래 백만건의 텍스트를 MS-SQL에 저장하는데 걸린 시간이다. 7초!!!!!!!!!
벌크인서트, 대량인서트, 백만건, Bulk Insert, MS-SQL BULK, 벌크 인서트, BulkInsert, .NET, C#
'프로그래밍 > .NetFramework' 카테고리의 다른 글
| TestDriven.NET 닷넷 유닛테스트 (2) | 2016.02.26 |
|---|---|
| 어셈블리(Assembly) / COM+ 등록 (0) | 2015.08.07 |
| SHA-256 + Base64 Encrypt (암호화) (0) | 2014.04.10 |
| Delegate(델리게이트) Action<T>, Func<T> 간단사용법 (0) | 2014.03.12 |
| BackgroundWorker 사용법 (0) | 2014.02.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- jQuery
- JS
- CSS
- ASP.NET
- Mobile
- WebApi
- MSSQL
- workbook
- Ajax
- 프로시저
- SVG
- JavaScript
- Chart
- json
- jQuery Mobile
- html5
- jquery chart
- css3
- rowspan
- IE
- WCF
- Excel
- drag&drop
- 셀렉터
- 자바스크립트
- 제이쿼리
- grid
- 저장프로시저
- radius
- Style
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
글 보관함