2009-11-02 2 views
1

SQL Server 데이터베이스를 밀어 넣어야하는 연락처 목록 (약 10k)이있는 Excel 파일이 있습니다. 그래서, Visual Studio 2008을 사용하여 .net Windows 프로그램을 작성하여 파일을 읽고, 각 연락처에 대해 임의의 암호를 생성 한 다음,이 정보를 SQL Server 데이터베이스로 푸시합니다.xls 파일을 읽고 편집하고 쓰고 SQL Server로 내보내는 방법

2003 년 Excel 파일 처리가 쉬웠지만 지금은 내 컴퓨터에 사무실 2007이 있고 상황이 변경된 것 같습니다. Microsoft.Office.Interop.Excel을 파고 있지만 이전보다 훨씬 복잡해 보입니다.

답변

0

나는이에 ETL 접근 방식을 취할 것입니다 :

  1. 을 SQL 서버
  2. 유효성 검사에서 준비 테이블에 데이터를 가져
  3. 는 SQL 쓰기 가져온 모든 데이터를 정리하는 SSIS 패키지를 만듭니다 가져온 각 행에 대한 암호를 무작위로 지정하고 SQL 작업으로 SSIS 패키지에서 해당 스크립트/저장된 proc을 호출하는 스크립트
  4. 준비 테이블에서 실제 데이터 테이블에 삽입

이 작업을 반복해서 수행해야하는 경우 패키지를 SQL Server에 저장하고 C# 프로그램에서 호출합니다.

0

이 방법이 도움이 될지 모르지만 SSIS (SQL Server Integration Services)가 도움이 될지 모르겠습니다.

Excel에서 원하는 조작을 수행하면서 Excel에서 매크로를 기록해 볼 수 있으며 조작이 완료되면 기록 된 매크로 (Alt + F8)를보고 '번역'할 수 있습니다 .NET 코드.

그냥 제안.

2

일종의 거래라면 Excel 파일을 조금 포맷하고 가져 와서 데이터베이스에 액세스 한 다음 원하는 모든 데이터베이스로 다시 가져올 수 있습니다.

.net에서 수행해야하는 경우 SQL을 사용하여 ODBC를 통해 Excel 파일을 열 수 있습니다. 약간 깨지기 쉽지만 과거에는 성공으로 사용했습니다.

Excel에서 연결 문자열이 같은

사용 무언가 :
제공 = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = C : \의 MyExcel.xls; HDR = 예; 속성 = "엑셀 8.0 확장 IMEX = 1";

워크 시트와 명명 된 섹션은 테이블 이름입니다. HDR = 예 첫 번째 행에 필드 이름이 있음을 의미합니다. 나는 그것이 조금 이상하다는 것을 인정할 것이다. :)

+0

그래, 난이 문서에 http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx 을 파고 있어요 그러나 나는 오류 'Microsoft.Jet을 얻었다. OLEDB.4.0 '공급자가 로컬 컴퓨터에 등록되어 있지 않습니다. dll 파일을 등록하려고 시도했지만 다른 모든 문제가 여전히 발생하지만 Windows 7을 실행하고 있기 때문에 문제인지 궁금합니다. – tuanvt

+0

Visual Studio의 프로젝트 속성에서 플랫폼 대상을 x86으로 변경하십시오. 이러한 드라이버는 64 비트 버전에서는 제공되지 않을 수 있습니다 ... –

+0

64 비트 액세스 드라이버는 [Microsoft Access 데이터베이스 엔진 2010 재배포 가능 파일] (http://www.microsoft.com/download/en/details.aspx?id= 13255). 연결 문자열에 대한 내 [answer over here] (http://stackoverflow.com/a/7223713/95195)를 참조하십시오. –

관련 문제