큰 MS SQL .sql 파일을 어떻게 가져 옵니까?
RedGate SQL 데이터 비교를 사용하고 .sql 파일을 생성하여 로컬 컴퓨터에서 실행할 수있었습니다. 그러나 문제는 파일의 크기가 300MB를 넘기 때문에 클립 보드에서 파일을 처리 할 수 없기 때문에 복사하여 붙여 넣을 수 없으며 SQL Server Management Studio에서 파일을 열려고하면 오류가 발생한다는 것입니다 파일이 너무 큽니다.
큰 .sql 파일을 실행하는 방법이 있습니까? 파일에는 기본적으로 두 개의 새 테이블에 대한 데이터가 포함됩니다.
명령 프롬프트에서 다음을 시작하십시오 sqlcmd
.
sqlcmd -S <server> -i C:\<your file here>.sql
그냥 교체 <server>
하여 SQL 상자의 위치 및 <your file here>
스크립트의 이름으로. SQL 인스턴스를 사용하는 경우 구문은 다음과 같습니다.
sqlcmd -S <server>\instance.
sqlcmd를 전달할 수있는 모든 인수 목록은 다음과 같습니다.
Sqlcmd [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w screen width]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-c cmdend] [-L[c] list servers[clean output]]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-m errorlevel] [-V severitylevel] [-W remove trailing spaces]
[-u unicode output] [-r[0|1] msgs to stderr]
[-i inputfile] [-o outputfile] [-z new password]
[-f | i:[,o:]] [-Z new password and exit]
[-k[1|2] remove[replace] control characters]
[-y variable length type display width]
[-Y fixed length type display width]
[-p[1] print statistics[colon format]]
[-R use client regional setting]
[-b On error batch abort]
[-v var = "value"...] [-A dedicated admin connection]
[-X[1] disable commands, startup script, environment variables [and exit]]
[-x disable variable substitution]
[-? show syntax summary]
나는 정확히 같은 문제가 있었고 잠시 동안 고투하고 있었고 마침내 기본 패킷 크기를 변경하기 위해 -a
매개 변수를 설정하는 솔루션을 찾았습니다 sqlcmd
.
sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
이 도구도 사용할 수 있습니다. 정말 유용합니다.
- 관리자 권한으로 명령 프롬프트 수행
- .sql 파일이 저장된 디렉토리로 변경하십시오.
다음 명령을 실행하십시오
sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql
MSSQL Express 2014를 사용하고 있는데 어떤 솔루션도 도움이되지 않았습니다. 그들은 모두 방금 SQL을 추락했습니다. 많은 간단한 insert 문으로 스크립트 를 실행하기 만하면되었으므로 마지막 수단으로 작은 콘솔 응용 프로그램을 작성하여 해결했습니다.
class Program
{
static void Main(string[] args)
{
RunScript();
}
private static void RunScript()
{
My_DataEntities db = new My_DataEntities();
string line;
System.IO.StreamReader file =
new System.IO.StreamReader("c:\\ukpostcodesmssql.sql");
while ((line = file.ReadLine()) != null)
{
db.Database.ExecuteSqlCommand(line);
}
file.Close();
}
}
osql을 사용하여 명령 행에서 실행하십시오 (여기 참조).
http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+using+OSQL
귀하의 질문은 이것 과 매우 유사합니다
파일 / 스크립트를 .txt 또는 .sql로 저장하고 Sql Server Management Studio에서 실행할 수 있습니다 (메뉴는 Open / Query라고 생각한 다음 SSMS 인터페이스에서 쿼리를 실행하십시오). 첫 번째 줄을 업데이트하여 로컬 컴퓨터에서 만들거나 선택할 데이터베이스를 나타냅니다.
이 데이터 전송을 자주 수행해야하는 경우 복제를 수행 할 수 있습니다. 필요에 따라 스냅 샷 복제가 정상일 수 있습니다. 두 서버간에 데이터를 동기화해야하는 경우 병합 복제와 같은보다 복잡한 모델을 사용할 수 있습니다.
편집 : 파일 크기에 연결된 SSMS에 문제가 있음을 알지 못했습니다. 그런 다음 다른 사람들이 제안한대로 스냅 샷 복제 (주 서버에 게시, 로컬 서버에 가입, 복제, 구독 취소) 또는 백업 / 복원 명령 줄을 사용할 수 있습니다.
파일에는 기본적으로 두 개의 새 테이블에 대한 데이터가 포함됩니다.
그러면 두 서버가 동일한 네트워크에있는 경우 DTS (또는 SQL Server 2005 이상인 경우 SSIS)로 데이터를 보내는 것이 더 간단 할 수 있습니다.
두 서버가 동일한 네트워크에 있지 않으면 소스 데이터베이스를 백업하고 대상 서버의 새 데이터베이스로 복원 할 수 있습니다. 그런 다음 DTS / SSIS 또는 간단한 INSERT INTO SELECT
을 사용하여 두 테이블을 대상 데이터베이스로 전송할 수 있습니다.
이것이 당신을 돕기를 바랍니다!
sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql
나는 비슷한 문제가 있었다. SQL 스크립트가있는 내 파일의 크기는 150MB를 넘었습니다 (거의 900k의 매우 간단한 INSERT 포함 ). Takuro가 조언 한 솔루션을 사용했지만 (이 질문에 대한 답변으로) 메모리가 충분하지 않다는 메시지가 계속 표시됩니다 ( "이 쿼리를 실행하기 위해 '내부'리소스 풀에 시스템 메모리가 부족합니다").
내가 도움이 된 것은 50k INSERT 마다 GO 명령을 넣는 것 입니다.
(문제 (파일 크기)를 직접 다루지는 않지만 큰 크기의 SQL 스크립트 자체와 간접적으로 연결된 문제를 해결한다고 생각합니다. 많은 경우 삽입 명령)
참고 URL : https://stackoverflow.com/questions/431913/how-do-you-import-a-large-ms-sql-sql-file
'IT story' 카테고리의 다른 글
jQuery를 사용하여 페이지로드시 양식 입력 텍스트 필드에 집중하는 방법은 무엇입니까? (0) | 2020.04.20 |
---|---|
Xcode 빌드 옵션의 영향 "비트 코드 사용"예 / 아니요 (0) | 2020.04.19 |
HTML에서는 ✓로 확인 표시를 할 수 있습니다. (0) | 2020.04.19 |
여러 클래스에 스타일을 한 번에 적용하려면 어떻게해야합니까? (0) | 2020.04.19 |
Eclipse 전체 행 키보드 단축키 복사 / 붙여 넣기 (0) | 2020.04.19 |