2013-12-09 4 views
2

저는 C# (VB에서 경험이 많음)에 익숙하며 일부 매우 큰 파이프 (|)로 구분 된 파일을 SQL Server 데이터베이스로 가져 오려고합니다.큰 텍스트 파일을 SQL Server 데이터베이스로 가져 오기

SharpDevelop를 사용하여 C# 프로젝트를 만들고 코드를 추가하여 특정 이름의 텍스트 파일을 검색하고 SQL Server의 대상 테이블이 파일 이름을 기반으로 할 위치를 식별했습니다. 또한 오류없이 실행되는 SQL 연결을 만들었지 만 지금까지 얻은 것입니다.

그래서 이러한 유형의 파일 (크기가 몇 천 킬로바이트에서 거의 2GB 크기)을 가져 와서 SQL Server로 가져 오는 것이 가장 좋습니다. 텍스트 파일에는 열 이름의 머리글 행과 날짜로 서식을 지정하려는 몇 개의 열도 있습니다. 또한 가져 오기 전에 테이블이 먼저 존재하는지 확인하여 생성 여부를 확인해야합니다.

필자는 일종의 파일 판독기를 사용하여 파일을 줄 단위로 읽거나 전체 파일을 읽어야합니까? 이것에 접근하는 가장 좋은 방법은 확실하지 않습니다.

+3

C#을 사용하고 직접 작성해야합니까? 이러한 사례를 매우 쉽게 처리 할 수있는 강력한 기능을 제공하는 SSIS (Integration Services)를 확인할 수 있습니다. –

+0

이전에 [벌크 삽입] (http://msdn.microsoft.com/ko-kr/library/ms188365.aspx)을 사용하여 SQL Server에 많은 양의 데이터를 가져 왔습니다. 내가 SQL 서버에 저장된 프로 시저를 wirte하는 것이 좋습니다 것입니다. 프로 시저 내에서 filename, target-table 등의 매개 변수를 사용하려면 대량 삽입을 수행하십시오./SSIS 편집도 좋습니다. 데이터 유형에 주로 의존합니다. 얼마나 자주 가져와야하며 항상 같은 형식 인 경우 – Koryu

+0

한 번 가져 오기 또는 계속 프로세스입니까? 한 번 가져올 경우 SSMS의 데이터베이스에서 사용할 수있는 데이터 가져 오기 작업 만 사용할 수 있습니다. 이 가져 오기 프로세스를 반복적으로 수행해야하는 경우 marc_s가 제안한대로 SSIS를 조사합니다. –

답변

2

큰 텍스트 파일을 읽으려면 버퍼링 된 스트림을 사용하는 것에 대해 this post을보십시오. 파이프를 분할하고 SQL 함수를 호출하는 것은 상대적으로 쉽습니다.

+0

그래서 나는이 일을하고 있고, 나의 유일한 불만은 그것이 정말로 느리게 달린다는 것입니다. 가져올 3MB 텍스트 파일 테이블 ~ 20 분. 이 속도를 높이기 위해 사용할 수있는 다른 방법이 있습니까? 지금은 한 번에 한 줄씩 읽고 삽입하는 것입니다. 어쩌면 나는 한 번에 50 줄을 읽을 수 있었고 그 삽입 물을 시도해 볼 수 있었을 것이다. – Baub

+0

네 말이 맞아. 개별 삽입 문은 영원히 걸릴 것입니다. 삽입을 일괄 적으로 실행하도록 SqlBulkCopy 클래스를 살펴보십시오. http://msdn.microsoft.com/en-us/library/7ek5da1a(v=vs.110).aspx –

2

BCP은 원시 텍스트 데이터를 가져 오는 가장 빠른 방법입니다. SSIS는 또 다른 옵션이지만 데이터를 한 행씩 읽고 번역자를 통해 실행하는 오버 헤드가 있습니다.

관련 문제