SQL Server - запуск больших файлов скриптов
У меня есть таблица базы данных на сервере разработки, которая теперь полностью заполнена после того, как я запустил ее с помощью процедуры импорта для файла CSV, содержащего 1,4 миллиона строк.
Я запустил мастер публикации баз данных на столе, и теперь у меня на локальном компьютере находится сценарий SQL объемом 286 МБ. Проблема в том, что я не могу понять, как его запустить. Если я загружаю его в SQL Server Management Studio Express, я получаю окно с предупреждением "Операция не может быть завершена".
Любые идеи о том, как я могу запустить этот сценарий SQL?
5 ответов
Выполнение чего-то такого большого в одной транзакции не очень хорошая идея. Поэтому я бы рекомендовал разбить файл на более мелкие, более управляемые куски.
Другой вариант - взглянуть на некоторые другие способы прямого импорта данных CSV.
Используйте инструмент sqlcmd для запуска файла..
sqlcmd -S myServer\instanceName -i C:\myScript.sql
В случае, если у вас есть необъяснимая "ошибка скрипта" для больших файлов sql (> 100 МБ), которая включает в себя несколько INSERT, просто замените "INSERT INTO" на "GO INSERT INTO" в вашем файле, что уменьшит размер транзакции.
Этот инструмент ( Big SQL Script File Runner) на CodePlex запускает файл сценария любого размера с журналом и графическим интерфейсом.
Добавление к ответу Гульзара Назима: Если вы все еще получаете ошибку, попробуйте указать кодовую страницу вашего файла SQL, используя опцию -f
:
sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001
Я пытался импортировать файл.dump из SQLite (по умолчанию UTF-8), и sqlcmd продолжал выдавать ошибку после появления первого специального символа. -f 65001
исправил это для меня.
Почему бы просто не использовать DTS для прямого импорта файла CSV?
Да, мы могли бы это сделать, я попробовал использовать подход BCP(программа массового копирования), чтобы избежать проблемы OutOfMemory.
Примечание. Испытано в SQLServer 2014.
В BCP сначала нам нужно экспортировать данные исходной базы данных в файл bcp (в папке локального каталога), а затем нужно импортировать этот файл bcp в исходную базу данных.
Ниже приведены шаги прогулки по торту:
Примечание:
а) Убедитесь, что в целевой базе данных присутствует пустая таблица.
б) Убедитесь, что папка Temp присутствует на диске C
1) Создайте файл bat с именем Export_Data.bat с помощью команды ниже
bcp.exe [Source_DataBase_Name].[dbo].[TableName] OUT "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q
Пауза
2) Запустите этот файл bat, в результате в папке Temp будет создан файл bcp
3) Затем создайте другой файл летучей мыши с именем Import_Data.bat с помощью команды ниже
bcp.exe [Destination_DataBase_Name].[dbo].[TableName] IN "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q
Пауза
И здесь мы идем!!