2010-05-05 2 views
3

약 50 개의 T-SQL 파일이 있으며 그 중 일부는 30MB이지만 일부는 700MB입니다. 수동으로 실행하는 것을 고려했지만 파일이 10MB보다 크면 SQL Server Management Studio에서 메모리 부족 예외가 발생합니다.SQL Server에서 큰 SQL 파일을 실행하는 방법은 무엇입니까?

아이디어가 있으십니까?

+2

에 문제가있을 경우 처리 약간의 오류를 추가 할 수 있습니까? – edosoft

+0

INSERT (col1, col2) VALUES ('col1 data', 'col2 data') 콜렉션을 보았지만 그 점에 대해서도 궁금합니다. 큰 줄. 다른 DB 시스템이나 다른 것으로 변환하는 것. –

+0

50 개의 sql 파일 = 미국 상태이며 각 행은 비즈니스의 'INSERT'행입니다. –

답변

5

-이 예에서 데이터를 가지고 훨씬 더 쉽고 똑똑되지 않을 것 CSV 파일을 만든 다음 SQL Server로 대량 가져 오기 ??

BULK INSERT 명령을 확인하십시오. 대형 데이터 볼륨을 SQL Server에 빠르고 효율적으로로드 할 수 있습니다. 이러한 거대한 SQL 파일보다 훨씬 뛰어납니다!

BULK INSERT dbo.YourTableName 
    FROM 'yourfilename.csv' 
    WITH (FIELDTERMINATOR =';', 
      ROWTERMINATOR =' |\n') 

또는 어떤 형식으로 가져해야 할 수도 있습니다 :

명령은 같이 보입니다.

+1

물론 더 효율적이고 더 나은 전략이지만 때로는 SQL 문 파일이 제공됩니다. DBMS간에 데이터를 전달하는 경우 가장 가능성이 높습니다. 그래서, 당신은 인상적인 regex-fu를 보여줄 수 있고 csv 파일로 바꾸거나 이미 가지고있는 것을 처리 할 수 ​​있습니다. –

12

다른 메모리 제한이있는 sqlcmd 명령 줄 도구를 사용해보십시오. http://msdn.microsoft.com/en-us/library/ms162773.aspx

사용 예 : 당신은 많은 데이터가있는 경우

sqlcmd -U userName -P myPassword -S MYPCNAME\SQLEXPRESS -i myCommands.tsql 
3

어쩌면 이것은 너무 분명하지만 ... 파일을 반복하는 프로그램을 작성하고 각 줄에 SqlCommand.ExecuteNonQuery()을 호출하는 것을 고려 했습니까? 그것은 거의 사소한 것입니다.

덜 분명한 장점 :

당신은 서버 늪하지 않으려는
  • 당신이 경우에 (그것을 스로틀 수 (시간이 좀 걸릴 것입니다) 피드의 진행 상황을 모니터 할 수 있습니다
    • )
    • 당신은 그 700메가바이트 큰 SQL 파일에 _is_ 어떤 입력 파일
    • 호기심에서
  • +0

    +1,이 작업에는 시간이 오래 걸릴 수 있지만 영업 담당자가 대량 파일을 편집하여 대량로드가 작동하지 않는 한 이것이 유일한 해결책 일 가능성이 큽니다. –

    관련 문제