Запустите все файлы SQL в каталоге - PullRequest
107 голосов
/ 06 апреля 2010

У меня есть несколько файлов .sql, которые мне нужно запустить, чтобы применить изменения, сделанные другими разработчиками, в базе данных SQL Server 2005. Файлы именуются по следующей схеме:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

Есть ли способ запустить все из них за один раз?

Ответы [ 11 ]

129 голосов
/ 28 июня 2011

Создайте файл .BAT с помощью следующей команды:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

Поместите этот файл .BAT в каталог, из которого вы хотите выполнить файлы .SQL, дважды щелкните файл .BAT, и все готово!

66 голосов
/ 06 апреля 2010

Используйте FOR . Из командной строки:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
22 голосов
/ 05 июня 2015
  1. В SQL Management Studio откройте новый запрос и введите все файлы, как показано ниже

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. Перейдите в меню запросов в SQL Management Studio и убедитесь, что режим SQLCMD включен
  3. Нажмите на режим SQLCMD; файлы будут выделены серым цветом, как показано ниже

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. Теперь выполните
18 голосов
/ 06 апреля 2010

Убедитесь, что у вас включен SQLCMD, щелкнув опцию Запрос> Режим SQLCMD в Management Studio.

  1. Предположим, у вас есть четыре файла .sql (script1.sql,script2.sql,script3.sql,script4.sql) в папке c:\scripts.

  2. Создайте основной файл сценария (Main.sql) со следующим:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Сохраните файл Main.sql в самом скрипте c: \.

  3. Создайте командный файл с именем ExecuteScripts.bat со следующим:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    Не забудьте заменить <YourDatabaseName> на базу данных, в которой вы хотите выполнить свои скрипты. Например, если база данных «Сотрудник», команда будет выглядеть следующим образом:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. Выполнить пакетный файл, дважды щелкнув по нему.

9 голосов
/ 14 августа 2017

Вы можете использовать ApexSQL Propagate . Это бесплатный инструмент, который выполняет несколько сценариев для нескольких баз данных. Вы можете выбрать столько скриптов, сколько вам нужно, и выполнить их для одной или нескольких баз данных (даже для нескольких серверов). Вы можете создать список сценариев и сохранить его, а затем просто выбирать этот список каждый раз, когда хотите выполнить те же сценарии в созданном порядке (можно также добавить несколько списков сценариев):

Select scripts

Когда сценарии и базы данных выбраны, они будут показаны в главном окне, и все, что вам нужно сделать, это нажать кнопку «Выполнить», и все сценарии будут выполнены на выбранных базах данных в указанном порядке:

Scripts execution

7 голосов
/ 16 июня 2016

Общий запрос

сохраните нижеприведенные строки в блокноте с именем batch.bat и поместите в папку, где находятся все ваши файлы скриптов

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

Пример

для %% G in (* .sql) do sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i "%% G" пауза

иногда, если вам не удалось войти в систему, используйте следующий код с именем пользователя и паролем

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

для %% G in (* .sql) do sqlcmd / S NE8148server / d EMPLYEEDB -U Скотт -P тигр -i "%% G" пауза

После того, как вы создадите файл bat внутри папки, в которой находятся ваши файлы Script, просто нажмите на файл bat, ваши скрипты будут выполнены

5 голосов
/ 07 марта 2012

Я написал утилиту с открытым исходным кодом на C #, которая позволяет перетаскивать многие файлы SQL и запускать их в базе данных.

Утилита имеет следующие функции:

  • Файлы сценариев перетаскивания
  • Запустить каталог файлов сценариев
  • Sql Скрипт выводит сообщения во время исполнения
  • Сценарий пройден или не пройден, окрашены в зеленый и красный цвета (желтый для выполнения)
  • Остановка при ошибке
  • Открыть скрипт при ошибке
  • Запуск отчета с указанием времени для каждого сценария
  • Общая продолжительность
  • Проверка соединения с БД
  • Асинхронный
  • .Net 4 & протестировано с SQL 2008
  • Один исполняемый файл
  • Завершить соединение в любое время
2 голосов
/ 06 апреля 2010

Что я знаю, вы можете использовать команды osql или sqlcmd для выполнения нескольких файлов sql. Недостатком является то, что вам придется создать скрипт для обеих команд.

Использование SQLCMD для выполнения нескольких сценариев SQL Server

OSQL (Это для SQL Server 2000)

http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx

1 голос
/ 24 января 2019
@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

Шаг 1: вышеприведенные строки копируются в блокнот и сохраняются в виде летучей мыши.

step2: В папке d на диске abc во всех файлах Sql запросы, выполненные на сервере sql.

step3: укажите ваш ip, идентификатор пользователя и пароль.

0 голосов
/ 23 февраля 2017

Для выполнения каждого SQL-файла в одном и том же каталоге используйте следующую команду:

ls | awk '{print "@"$0}' > all.sql

Эта команда создаст один файл SQL с именами каждого файла SQL в каталоге, к которому добавлено "@".

После создания all.sql просто выполните all.sql с SQLPlus, это выполнит каждый файл sql в all.sql.

...