[sql] 큰 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
답변
나는 비슷한 문제가 있었다. SQL 스크립트가있는 내 파일의 크기는 150MB 이상입니다 (거의 900k의 매우 간단한 INSERT 포함 ). Takuro가 조언 한 솔루션을 사용했지만 (이 질문에 대한 답변으로) 메모리가 충분하지 않다는 메시지가 계속 표시됩니다 ( “이 쿼리를 실행하기 위해 리소스 풀 ‘내부’에 시스템 메모리가 부족합니다”).
내가 도움이 된 것은 50k INSERT 마다 GO 명령을 넣는 것 입니다.
(질문 (파일 크기)을 직접 다루지는 않지만 큰 크기의 SQL 스크립트 자체와 간접적으로 연결된 문제를 해결한다고 생각합니다. 많은 경우 삽입 명령)