Как импортировать большой файл 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
Ответ 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();
}
}
Ответ 6
Запустите его в командной строке с помощью osql, см. здесь:
http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+using+OSQL
Ответ 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