2012-05-07 3 views
0

거의 1200 개의 레코드가있는 txt 파일 (탭 구분)이 있습니다. 나는 벌크 삽입 작업을 수행하여 .txt 파일에서 테이블로 (구조) 데이터베이스에 이미 생성 된 데이터를 가져옵니다. 일괄 삽입이 왜 오래 걸리는 지 모르겠습니다. 이 작업의 원인을 확인하는 위치/방법/방법에 대한 제안 사항은 언제 까지나 있습니까? 감사. 이전에도 해봤지만 제대로 작동 했었습니다. 어떤 이유? RDBMS 및 성능에 관한SQL Server 2008 : 영원히 대량 가져 오기

BULK INSERT DataFromatltemp 
FROM '\\abcd\Admin\temp\Copyatltemp07.txt' 
WITH 
(
    FIELDTERMINATOR = '\t', 
    ROWTERMINATOR = '\n' 
) 
GO 
+0

이 테이블에서 작동하는 열린 트랜잭션이 있습니까? – pkmiec

+0

이 표는 변경되지 않았으므로 본인 만 사용할 수 있도록 작성했습니다. 감사. – Nemo

+0

영원히 정의하십시오 :)? 어쩌면 당신의 데이터베이스는 성장 크기가 1MB로 설정되어 있기 때문에 데이터베이스 파일의 크기를 늘려야 할 수도 있습니다. DB 옵션, 파일 그룹을 확인하고 파일 및 로그 파일의 매개 변수를 늘립니다. – YvesR

답변

-1

으로 거의 모든, 그것은 일련의 변수에 따라 다르지만 먼저 볼 수있는 몇 가지 힌트가 있습니다 :

  1. 데이터베이스 : 데이터베이스를 보장 단순 복구 모드를 사용하고 있습니다 ;
  2. 대상 테이블 : 모든 제약 조건을 지우십시오 (검사, 외래 키 포함).
  3. 대상 테이블 : 모든 인덱스 삭제;
  4. 목표 테이블 : 보증은 다른 프로세스에 의해 잠겨 있지 않습니다.
  5. 소스 파일 : 보증은 다른 프로세스에 의해 잠겨 있지 않습니다.

이 힌트가 도움이되기를 바랍니다.

+0

단일 복구 모드? 제약 조건을 지우고 인덱스를 삭제 하시겠습니까? 대량 삽입을 수행하기 위해 모든 색인을 삭제하는 이유는 무엇입니까? – Diego

+1

@Diego, "단순 복구 모드"사용시의 제안은 불필요한 디스크 오버 헤드를 유발할 수있는 대량 작업을 기록하지 않기위한 것입니다. 목표 테이블에서 인덱스와 외래 키를 삭제하는 이유는 디스크 오버 헤드를 피하기 위해서이기도합니다. 어쩌면 내 제안으로 Nemo의 문제를 해결하기에 충분하지 않을 수도 있지만, 잘못된 생각을 재고해야합니다. –

+0

잘못되었습니다. 단일 복구 모델을 프로덕션 환경에서 사용해서는 안됩니다. 모든 제약 조건을 지우고 모든 인덱스를 삭제하는 것은 끔찍한 조언입니다. 삽입이 완료되는 동안 데이터 무결성은 어떻습니까? 인덱스를 삭제하고 다시 만드는 데 필요한 시간은 언급하지 않습니까? – Diego

관련 문제