284 Stimmen

Wie importiert man eine große MS SQL .sql-Datei?

Ich verwende RedGate SQL Data Compare und habe eine .sql-Datei erstellt, die ich auf meinem lokalen Rechner ausführen kann. Das Problem ist jedoch, dass die Datei über 300 MB groß ist, was bedeutet, dass ich sie nicht kopieren und einfügen kann, weil die Zwischenablage sie nicht verarbeiten kann, und wenn ich versuche, die Datei in SQL Server Management Studio zu öffnen, erhalte ich eine Fehlermeldung, dass die Datei zu groß ist.

Gibt es eine Möglichkeit, eine große .sql-Datei auszuführen? Die Datei enthält im Wesentlichen Daten für zwei neue Tabellen.

529voto

Ray Booysen Punkte 26896

Starten Sie an der Eingabeaufforderung sqlcmd :

sqlcmd -S <server> -i C:\<your file here>.sql 

Einfach ersetzen <server> mit dem Standort Ihrer SQL-Box und <your file here> mit dem Namen Ihres Skripts. Vergessen Sie nicht, wenn Sie eine SQL-Instanz verwenden, lautet die Syntax:

sqlcmd -S <server>\instance.

Hier ist die Liste aller Argumente, die Sie sqlcmd übergeben können:

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]

87voto

Takuro Punkte 751

Ich hatte genau dasselbe Problem und habe mich eine Weile damit herumgeschlagen, bis ich endlich die Lösung gefunden habe, nämlich die Einstellung -a an den Parameter sqlcmd um seine Standard-Paketgröße zu ändern:

sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767

21voto

Yigit Yuksel Punkte 925

Sie können dieses Tool ebenfalls verwenden. Es ist wirklich nützlich.

BigSqlRunner

NB: Der Link ist fehlerhaft, daher wurde er aktualisiert.

20voto

Syam Kumar Punkte 347
  1. Eingabeaufforderung mit Administratorberechtigung aufrufen

  2. Wechseln Sie in das Verzeichnis, in dem die .sql-Datei gespeichert ist

  3. Führen Sie den folgenden Befehl aus

    sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql

8voto

Ich verwende MSSQL Express 2014 und keine der Lösungen hat bei mir funktioniert. Sie haben alle SQL zum Absturz gebracht. Da ich nur brauchte, um ein einmaliges Skript ausführen mit vielen einfachen Einfügeanweisungen habe ich es umgangen, indem ich als allerletzten Ausweg eine kleine Konsolenanwendung geschrieben habe:

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();
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X