programing

SQL Server - 큰 스크립트 파일 실행

muds 2023. 7. 10. 23:00
반응형

SQL Server - 큰 스크립트 파일 실행

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

테이블에서 Database Publishing Wizard(데이터베이스 게시 마법사)를 실행했는데, 이제 로컬 컴퓨터에 286MB SQL 스크립트가 있습니다.문제는, 어떻게 운영해야 할지 모르겠어요.SQL Server Management Studio Express에 로드하면 "작업을 완료할 수 없습니다."라는 알림 창이 나타납니다.

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

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

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

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

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

굴자르 나짐의 대답에 덧붙여,그래도 오류가 발생하면 옵션을 사용하여 SQL 파일의 코드 페이지를 지정해 보십시오.-f:

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

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

DTS를 사용하여 CSV 파일을 직접 가져오는 것이 어떻습니까?

네, 그렇게 할 수 있습니다. 메모리 부족 문제를 방지하기 위해 BCP(Bulk Copy Program) 접근 방식을 사용해 보았습니다.

참고: SQL Server 2014에서 사용됨

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

enter image description here

케이크 워크 단계는 다음과 같습니다.

참고:

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

C 드라이브에 Temp 폴더가 있는지 확인합니다.

아래 명령을 사용하여 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 

멈추다

해당 bat 파일을 실행하면 결과적으로 temp 폴더에 bcp 파일이 생성됩니다.

그런 다음 아래 명령을 사용하여 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 

멈추다

그리고 갑니다!!

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

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

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

반응형