programing

대용량 MS SQL .sql 파일을 Import하려면 어떻게 해야 합니까?

instargram 2023. 4. 7. 20:53
반응형

대용량 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

이 도구도 사용할 수 있습니다.그것은 매우 유용하다.

BigSqlRunner

링크가 끊어졌으므로 업데이트했습니다.

  1. 관리자 권한으로 명령 프롬프트 표시

  2. 디렉토리를 .sql 파일이 저장된 곳으로 변경합니다.

  3. 다음 명령을 실행합니다.

    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 SELECT2 개의 테이블을 행선지 데이터베이스로 전송 합니다.

매우 큰 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

반응형