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
'developer tip' 카테고리의 다른 글
'cv :: inRange'(OpenCV)를 사용하여 색상 감지를위한 올바른 상위 및 하위 HSV 경계 선택 (0) | 2020.11.16 |
---|---|
Mac OS X에서 MySQL이 설치된 위치 알아보기 (0) | 2020.11.16 |
가장 가치있는 .Net Compact Framework 팁, 트릭 및 Gotcha-Avoiders는 무엇입니까? (0) | 2020.11.16 |
C #의 저장 프로 시저에서 반환 값 가져 오기 (0) | 2020.11.16 |
jQuery에서 bind와 live 메소드의 차이점은 무엇입니까? (0) | 2020.11.16 |