Как импортировать большой файл MS SQL.sql?

Я использую сравнение данных SQL RedGate и создаю файл .sql, поэтому я могу запустить его на своей локальной машине. Но проблема в том, что файл превышает 300 МБ, а это значит, что я не могу копировать и вставлять, потому что буфер обмена не сможет его обработать, и когда я пытаюсь открыть файл в SQL Server Management Studio, я получаю сообщение об ошибке о слишком большом файле.

Есть ли способ запустить большой файл .sql? Файл в основном содержит данные для двух новых таблиц.

Ответ 1

В командной строке запустите sqlcmd:

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

Просто замените <server> на расположение вашего поля SQL и <your file here> на имя вашего script. Не забывайте, что если вы используете экземпляр 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] 

Ответ 2

У меня была точно такая же проблема, и я некоторое время боролся, а затем нашел решение, которое должно установить параметр -a в sqlcmd, чтобы изменить размер пакета по умолчанию:

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

Ответ 3

Вы также можете использовать этот инструмент. Это действительно полезно.

BigSqlRunner

Ответ 4

  • Возьмите командную строку с правами администратора
  • Измените каталог, в котором хранится файл .sql
  • Выполните следующую команду

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

Ответ 5

Я использую MSSQL Express 2014, и ни один из решений не работал у меня. Все они просто разбили SQL. Поскольку мне нужно было запустить один script со многими простыми инструкциями вставки, которые я использовал, написав небольшое консольное приложение в качестве крайней меры:

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

Ответ 7

Ваш вопрос очень похож на этот

Вы можете сохранить файл / script в формате .txt или .sql и запустить его из Sql Server Management Studio (я думаю, что меню Open/Query, а затем просто запустите запрос в интерфейсе SSMS). Вам нужно обновить первую строку, указав базу данных, которая будет создана или выбрана на вашем локальном компьютере.

Если вам приходится часто делать эту передачу данных, вы можете перейти к репликации. В зависимости от ваших потребностей репликация моментальных снимков может быть в порядке. Если вам нужно синхронизировать данные между двумя серверами, вы можете пойти на более сложную модель, такую ​​как репликация слиянием.

EDIT: я не заметил, что у вас возникли проблемы с SSMS, связанными с размером файла. Затем вы можете перейти к командной строке, как это было предложено другими, репликации моментальных снимков (опубликовать на своем основном сервере, подписаться на ваш локальный, реплицировать, затем отказаться от подписки) или даже выполнить резервное копирование/восстановление

Ответ 8

В основном файл содержит данные для двух новых таблиц.

Тогда вам может показаться проще просто DTS (или SSIS, если это SQL Server 2005+), данные перейдут, если оба сервера находятся в одной сети.

Если два сервера не находятся в одной сети, вы можете создать резервную копию исходной базы данных и восстановить ее в новой базе данных на конечном сервере. Затем вы можете использовать DTS/SSIS или даже простой INSERT INTO SELECT, чтобы перенести две таблицы в целевую базу данных.

Ответ 9

Надеюсь, что это поможет вам!

sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql