2011-09-27 5 views
0

여러 가지 접근 방법 :MS SQL 테이블에 csv 파일을 업로드하는 가장 좋은 방법은 무엇입니까?

  1. 를 사용하여 SQL 대량 가져 오기 라인으로 파일 라인을 읽은 후 삽입 발동을 저장하고
  2. 사용 SqlBulkCopy의하는 System.Data.SqlClient DLL
  3. 에서 파일의 경로로 저장된 프로 시저를 호출 행별로 테이블 행에 넣으십시오
  4. 다른 방법?

어느 것이 가장 좋습니까? 나는 사용자가 asp.net 웹 페이지에서 파일을 선택하기를 원한다. 그리고 Upload 버튼을 클릭하여 파일을 DB에 저장합니다.

두 번째로 파일을 db 테이블에 복사하기 전에 파일을 서버 메모리에서 이동해야합니까?

+1

나는 # 2에 투표 할 것입니다. 간단하고 잠재적 SQL 인젝션을 처리합니다 (코드에 따라 라인별로 읽을 수도 있고 그렇지 않을 수도 있습니다). 효율적입니다. – David

답변

0
  1. DB는 파일의 모든 것을 분리하고 계층화해야하기 때문에 파일을 알 수 없습니다. 등의 오버 헤드를 일부 공유 위치에 파일을 추가합니다 저장 및 깔끔한 업

  2. 은 확실히 당신이 원자 작동되고 싶어요. 10k 행은 클라이언트 측 트랜잭션이 실행되는 10 왕복입니다. 원자가 아닌 경우 준비 테이블과 정리가 필요합니다.

  3. 구문 분석을 C#으로 보내고 table valued parameter으로 DB에 보내십시오. 그렇지 않으면 아마 아무 것도 같지 않고 사실적인 ...

+0

감사합니다. 파일을 db 테이블에 복사하기 전에 서버 메모리에서 파일을 이동해야합니까? – InfoLearner

+0

데이터의 복잡한 변형이 필요하다면 (사실 복잡한 것을 의미 함) 작업을 수행하기 위해 SSIS 패키지를 호출하는 것도 또 다른 가능성입니다. – HLGEM

+0

@KnowledgeSeeker : 어 .. 정말로. 예를 들어, CSV에서 datareader를 사용할 수 있으며이 형식은 SQLBulkCopy에 대한 입력입니다. 나는 .net 비트를 직접하지 않았다 : 단지 SQL 측면. "웹 서버에서 처리해야합니까?"라는 메시지가 나오면 SQL Server로 보냅니다. "예, 그렇습니다. – gbn

관련 문제