대용량 MS SQL .sql 파일을 Import하려면 어떻게 해야 합니까?
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
MSQL 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
도움이 되길 바랍니다!
sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql
저도 비슷한 문제가 있었어요.sql 스크립트를 사용한 파일은 150MB가 넘는 크기였습니다(거의 900k의 매우 간단한 삽입).Takuro가 조언한 솔루션(이 질문의 답변)을 사용했지만 메모리가 부족하다는 메시지('내부' 자원 풀에 시스템 메모리가 부족하여 이 쿼리를 실행할 수 없습니다).
제가 도움이 된 것은 5만번 삽입할 때마다 GO 명령어를 넣었다는 것입니다.
(질문(파일 크기)에 직접 대처하는 것은 아니지만, sql 스크립트 자체의 큰 사이즈와 간접적으로 관련된 문제를 해결할 수 있다고 생각합니다.내 경우 많은 삽입 명령어)
==> sqlcmd - S [ servername ]-d [ scriptfilename ]-i [ scriptfilename ]-a 32767
365mb sql 파일을 사용하여 이 명령을 성공적으로 완료했습니다.이 구문은 약 15분 만에 실행됩니다.그것은 내가 알아내는 데 오랜 시간이 걸렸던 문제를 해결하는 데 도움을 주었다.
스크립트 파일 실행
명령 프롬프트창을 엽니다
창에서 과 같이 sqlcmd -S <ServerName\InstanceName> -i C:\yourScript.sql
ENTER를 누릅니다.
당신의 질문은 이것과 매우 유사합니다.
파일/스크립트를 .txt 또는 .sql로 저장하고 SQL Server Management Studio에서 실행할 수 있습니다(메뉴는 Open/Query인 것 같습니다.그 후 SSMS 인터페이스에서 쿼리를 실행합니다).로컬 머신에서 작성 또는 선택할 데이터베이스를 나타내는 첫 번째 행을 업데이트해야 합니다.
이러한 데이터 전송을 자주 수행해야 하는 경우 복제를 수행할 수 있습니다.요구에 따라서는, 스냅샷의 레플리케이션에도 문제가 없습니다.두 서버 간에 데이터를 동기화해야 하는 경우, 병합 복제와 같은 더 복잡한 모델을 사용할 수 있습니다.
편집: 파일 크기에 연결된 SSMS에 문제가 있는 줄 몰랐습니다.그 후 다른 사용자가 제안한 대로 명령줄, 스냅샷 복제(메인 서버에 게시, 로컬 서버에 등록, 복제, 등록 취소) 또는 백업/복원까지 수행할 수 있습니다.
이 파일에는 기본적으로 두 개의 새 테이블에 대한 데이터가 포함되어 있습니다.
2대의 서버가 같은 네트워크상에 있는 경우는, 데이터 오버를 DTS(또는 SQL Server 2005+ 의 경우는 SSIS)만으로 간단하게 실시할 수 있습니다.
두 서버가 같은 네트워크에 없는 경우 원본 데이터베이스를 백업하고 대상 서버의 새 데이터베이스에 복원할 수 있습니다.DTS DTS/SSIS를 사용할 수 .INSERT INTO SELECT
2 개의 테이블을 행선지 데이터베이스로 전송 합니다.
매우 큰 SQL 덤프를 Import할 때 문제가 발생하는 모든 펠로우에게는 다른 방법이 있을 수 있습니다.
가능한 경우 고려해야 할 사항:서버에 액세스 할 수 있는 경우는, 데이터베이스를 복수의 부분으로 export 할 수 있습니다(처음에는 구조, 다음으로 테이블(또는 관련 오브젝트)마다, 1개의 큰 파일이 아닌, 작은 조각으로 데이터를 export 할 수 있습니다).
서버에 액세스할 수 없거나 기존 빅 파일을 사용해야 하는 경우 SQLDumpSplitter(https://philiplb.de/sqldumpsplitter3/)를 사용하여 여러 부분으로 분할할 수 있습니다.
그런 다음 조각을 가져와 데이터베이스의 전체 복사본을 가져옵니다.
행운을 빈다, 여러분.
언급URL : https://stackoverflow.com/questions/431913/how-do-you-import-a-large-ms-sql-sql-file
'programing' 카테고리의 다른 글
SQL Server 데이터베이스의 모든 테이블을 삭제하는 방법 (0) | 2023.04.07 |
---|---|
T-SQL 캐스트와 변환 (0) | 2023.04.07 |
SQL Server에서 외부 키를 드롭하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
SSMS 2008의 "Edit Top 200 Rows"에서 SQL을 변경하는 방법 (0) | 2023.04.07 |
언제 이너 조인에 크로스 적용을 사용해야 하나요? (0) | 2023.04.07 |