developer tip

SQL Server-대용량 스크립트 파일 실행

copycodes 2020. 11. 16. 21:40
반응형

SQL Server-대용량 스크립트 파일 실행


140 만 행을 포함하는 CSV 파일에 대한 가져 오기 루틴으로 실행하도록 설정 한 후 이제 완전히 채워진 개발 서버에 데이터베이스 테이블이 있습니다.

테이블에서 데이터베이스 게시 마법사를 실행했는데 이제 로컬 컴퓨터에 286MB SQL 스크립트가 있습니다. 문제는 실행 방법을 알 수 없다는 것입니다. SQL Server Management Studio Express에로드하면 "작업을 완료 할 수 없습니다"라는 경고 창이 나타납니다.

이 SQL 스크립트를 실행하는 방법에 대한 아이디어가 있습니까?


단일 트랜잭션 내에서 큰 것을 실행하는 것은 좋은 생각이 아닙니다. 따라서 파일을 더 작고 관리하기 쉬운 청크로 분할하는 것이 좋습니다.

또 다른 옵션은 CSV 데이터를 직접 가져 오는 몇 가지 다른 방법을 살펴 보는 것입니다.


sqlcmd 도구를 사용하여 파일을 실행합니다.

sqlcmd -S myServer\instanceName -i C:\myScript.sql

여러 INSERT를 포함하는 대용량 SQL 파일 (> 100MB)에 대해 설명 할 수없는 "스크립트 오류"가있는 경우 파일에서 "INSERT INTO"를 "GO INSERT INTO"로 바꾸면 트랜잭션 크기가 줄어 듭니다.


CodePlex 의이 도구 ( Big SQL Script File Runner )는 로그 및 GUI가있는 모든 크기의 스크립트 파일을 실행합니다.


Gulzar Nazim의 답변에 추가 : 여전히 실패 하면 옵션을 사용하여 SQL 파일 코드 페이지지정하십시오 -f.

sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001

SQLite (기본적으로 UTF-8)에서 .dump 파일을 가져 오려고했는데 sqlcmd에서 첫 번째 특수 문자가 발생한 후 오류가 계속 발생했습니다. -f 65001나를 위해 고쳤습니다.


DTS를 사용하여 CSV 파일을 직접 가져 오지 않는 이유는 무엇입니까?


예, 그렇게 할 수 있습니다. OutOfMemory 문제를 피하기 위해 BCP (Bulk Copy Program) 접근 방식을 시도했습니다.

참고 : SQLServer 2014에서 시도

BCP에서 먼저 Source DataBase 데이터를 bcp 파일 (로컬 디렉터리 폴더)로 내 보낸 다음 해당 bcp 파일을 Source DataBase 로 가져와야합니다.

여기에 이미지 설명 입력

다음은 케이크 걷기 단계입니다.

노트 :

a) 대상 데이터베이스에 빈 테이블이 있는지 확인

b) C 드라이브에 Temp 폴더가 있는지 확인

1) 아래 명령을 사용 하여 Export_Data.bat 라는 bat 파일을 만듭니다.

bcp.exe [Source_DataBase_Name].[dbo].[TableName] OUT "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q 

중지

2) 해당 bat 파일을 실행하면 bcp 파일이 Temp 폴더에 생성됩니다.

3) 그런 다음 아래 명령 으로 Import_Data.bat 라는 다른 bat 파일을 만듭니다.

bcp.exe [Destination_DataBase_Name].[dbo].[TableName] IN "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q 

중지

우리가 간다!!

참고 URL : https://stackoverflow.com/questions/222442/sql-server-running-large-script-files

반응형