SQL Server - запуск больших файлов script

У меня есть таблица базы данных на сервере разработки, которая теперь полностью заполнена после того, как я установил ее с помощью процедуры импорта для файла CSV, содержащего 1,4 миллиона строк.

Я запустил мастер публикации базы данных в таблице, и теперь у меня есть 286 МБ SQL script на моем локальном компьютере. Проблема в том, что я не могу понять, как ее запустить. Если я загружу его в SQL Server Management Studio Express, я получаю окно предупреждения, в котором говорится: "Операция не может быть завершена".

Любые идеи о том, как я могу запустить этот SQL script?

Ответ 1

Запуск чего-то большого внутри одной транзакции не является хорошей идеей. Поэтому я бы рекомендовал разбить файл на более мелкие, более управляемые куски.

Другой вариант - посмотреть на некоторые другие способы импорта CSV-данных напрямую.

Ответ 2

используйте инструмент sqlcmd для запуска файла..

sqlcmd -S myServer\instanceName -i C:\myScript.sql

В случае, если у вас есть необъяснимая "ошибка скрипта" для больших файлов sql (> 100 МБ), которая включает в себя несколько INSERT, просто замените "INSERT INTO" на "GO INSERT INTO" в вашем файле, что уменьшит размер транзакции.

Ответ 3

Этот инструмент (Big SQL Script File Runner) на CodePlex будет запускать любой размер Script с журналом и графическим интерфейсом.

Ответ 4

Добавление к Гульзару Назиму: Если вы по-прежнему получаете сбой, попробуйте указать кодовую страницу вашего файла SQL с помощью опции -f:

sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001

Я пытался импортировать файл .dump из SQLite (по умолчанию UTF-8), и sqlcmd продолжал бросать ошибку после столкновения с первым специальным символом. -f 65001 исправил это для меня.

Ответ 5

Почему бы просто не использовать DTS для импорта CSV файла напрямую?

Ответ 6

Да, мы могли бы сделать это, я пытался использовать подход BCP (Bulk Copy Program), чтобы избежать проблемы OutOfMemory.

Примечание: пробовал в SQLServer 2014

В BCP сначала нам нужно экспортировать данные исходной базы данных в файл bcp (в папке локального каталога), а затем импортировать этот файл bcp в исходную базу данных

enter image description here

Ниже приведены шаги по пирогу:

Замечания:

а) Убедитесь, что пустая таблица присутствует в базе данных назначения

б) Убедитесь, что папка 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 файл, в результате чего bcp файл будет сгенерирован в папке Temp.

3) Затем создайте другой файл bat с именем 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 

Пауза

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