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 

Пауза

И здесь мы идем!!

Другие вопросы по тегам