2011-11-24 2 views
1

두 가지 유형의 파일을 SQL Server에 가져 오는 C#의 프로그램을 만들고 싶습니다 : 탭으로 구분 된 고정 된 열. 사실, 매일 파일을 다운로드하고 그 파일을 내 데이터베이스로 가져와야합니다. 배치 스크립트로 콘솔 앱을 만들 수 있습니다. this과 같은 몇 가지 예제를 보았지만 가장 좋은 객체 지향 방법인지는 알 수 없습니다.C#을 사용하여 SQL 서버에 플랫 파일 가져 오기

StreamReader, Regex 등등을 사용할 수는 있지만 바퀴를 다시 발명하고 싶지는 않습니다.

추신 : "QueryTables.Add"를 사용했습니다.

+0

당신이 파일이 SQL 서버 관련 다워야 어떤 형식을 보여줄 수 있을까? – msarchet

+0

배치 태그는 "Windows 배치 파일 질문에 사용됨"에 유의하십시오. 질문이 어떤 식 으로든 "일괄"단어와 관련되어 있기 때문에 사용하지 마십시오. – Aacini

답변

1

휠을 다시 만들지 않으려면 SQL Server에서 제공하는 네이티브 도구 인 bcp을 확인해야합니다. Here은 bcp에 대한 FAQ 목록입니다.

0

소리는 SSIS (SQL Server Integration Services)에 가장 적합합니다. SSIS에서 데이터 가져 오기 작업을 쉽게 정의한 다음 SQL 작업을 사용하여 실행되도록 예약 할 수 있습니다.

+0

SQL Server 2008 Express를 사용하고 있습니다. – Makah

2

SqlBulkCopy을 통해 완전히 관리되는 코드로 가져올 수 있습니다. SqlBulkCopy에 TSV를 처리하는 IDataReader를 전달하면됩니다. 다행히도 codeproject에있는 FastCsvReader은 정확히 그렇게 할 수 있습니다. 에서

+0

내 파일에 휴지통이 있습니다. 행 패턴 (Regex)과 같은 것이 필요합니다. 일부 파일 변환기를 만든 다음 SQLBulk를 사용할 수 있습니다. – Makah

0
bulk insert [dbo].[CoursesTemp] 

'C : \ 사용자 \ 공공 \ 다운로드 \ Courses.csv'

with (fieldterminator = ',', rowterminator = '\n') 
go 
insert [dbo].[Courses] 
    (code, description, instructor, date, venue, duration) 
select 
    code, description, instructor, cast(date as date), venue, 
    duration 
from [dbo].[CoursesTemp]