티스토리 뷰
대량의 데이터를 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
- json
- html5
- radius
- grid
- css3
- 프로시저
- Ajax
- jQuery
- 저장프로시저
- 셀렉터
- WebApi
- rowspan
- Chart
- MSSQL
- 제이쿼리
- jQuery Mobile
- JavaScript
- jquery chart
- WCF
- IE
- Excel
- drag&drop
- CSS
- ASP.NET
- workbook
- Mobile
- JS
- 자바스크립트
- Style
- SVG
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함