2010-12-27 4 views
0

사용자가 자신의 Excel 시트를 업로드 할 수있는 웹 응용 프로그램 (ASP.NET 3.5)이 있습니다. 이 시트에는 SQL Server 2005에 삽입해야하는 항목에 대한 정보가 포함되어 있습니다.Excel 2007 시트에서 SQL Server 2005로 데이터를 빠르게 내보내는 방법

이 기능은 이미 갖고 있지만 매우 느립니다 (요청을 완료하는 데는 약 20 분이 소요됩니다). 이 문제를 해결할 더 좋은 방법이 필요합니다.

이 시트에는 항목에 대한 정보가 들어 있습니다. 이러한 속성은 여러 테이블 (예 : 책, 저자, 제목 ... 등)에 삽입됩니다. 나는 현재하고 있어요 무엇

은 다음

  1. 사용자는 응용 프로그램이
  2. 각 행을 읽고 그에 따라 데이터베이스를 업데이트 파일을 열고
  3. 파일을 업로드합니다.

나는 Microsoft.Office.Interop.Excel

편집을 사용하고 있습니다 : 나는 한 장에 10.000+ 행과 함께 일하고 있어요.

+0

SQL Server Integration Services 사용에 대해 생각해 보셨습니까? – RobS

+0

인터넷에서 솔루션을 검색하는 동안 문제가 발생했지만 지금은 내 리그를 넘기는 방법입니다. 그러나 나는 이것을 염두에 두겠다. 고마워. – Ali

+0

Cells (int, int)는 Range보다 훨씬 성능이 좋습니다. 또한 "다시 계산"을 비활성화하십시오. interop보다 빠른 두 가지 다른 Excel 라이브러리가 있습니다. – turtlepick

답변

0

SqlBulkCopy 클래스를 사용할 수 있습니다.

+0

감사합니다. 나는 그것을 조사 할 것이다. – Ali

0

Microsoft Jet Database Engine을 사용하여 스프레드 시트를 데이터 테이블로 변환 한 다음 데이터베이스에 대량 삽입 할 수 있습니다.

this을 확인하십시오.

Excel 2007 파일을 처리하는 경우 다른 공급자를 사용해야합니다.

0

엑셀 파일을 openrowset으로 SQL 서버에 직접 열려고 했습니까?

+0

Excel> 2007을 사용하고 있습니다. 제트 엔진이 작동하지 않는다고 생각합니다. 그래서 'Interop.Excel'을 사용하고 있습니다. – Ali

+0

당신은 그것을 시도해 봤어, 그것도 2007 오른쪽으로해야 할 일을하는 것 같아요 OleDB 커넥터 – adopilot

+0

97-2003 형식으로 엑셀 파일을 저장하고 OpenRowSet을 사용하려고 했습니까? – NeverHopeless

0

내 경험에 의하면, interop를 통해 Excel 스프레드 시트를 읽고 쓰는 것이 당밀보다 느립니다. 얼마나 많은 데이터를 가지고 오랫동안 복용하는지는 놀랄 일이 아닙니다.

Excel 인스턴스를 만들려면 스프레드 시트를 직접 사용해보십시오. 아마 몇 배의 향상을 보게 될 것입니다. 이제 몇 초 안에 완료 될 것입니다. 2007/2010 .xlsx 파일로 작업하는 경우 성공하기 전에 EPPlus을 사용했습니다. 낡은 .xls 파일을 수락하면 this은 좋은 시작처럼 보이지만 이전에는 사용 해보지 않았습니다.

응용 프로그램의 우선 순위를 결정해야합니다. 문제가있는 곳이 아닌지 결정해야합니다. 그렇 겠지만, SQL 삽입이나 그럴 수 있습니다.

+0

제안 해 주셔서 감사합니다. 현재 EPPlus를 찾고 있는데 내가 찾고있는 것 같습니다. – Ali

관련 문제