Запуск всех файлов SQL в каталоге

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

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

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

Ответ 1

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

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

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

Ответ 2

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

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"

Ответ 3

  • В SQL Management Studio откройте новый запрос и введите все файлы ниже

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

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  • Теперь выполните

Ответ 4

Убедитесь, что SQLCMD включен, нажав кнопку Query > Параметр режима SQLCMD в студии управления.

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

  • Создайте основной файл script (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:\scripts.

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

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

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

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

Ответ 5

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

Select scripts

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

Scripts execution

Ответ 6

Общий запрос

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

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

Пример

для %% G в (*.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 в (*.sql) do sqlcmd/S NE8148server/d EMPLYEEDB -U Скотт -P тигр -i "%% G" пауза

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

Ответ 7

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

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

  • Файлы Drag & Drop script
  • Запустите каталог script файлов
  • Sql script выводить сообщения во время выполнения
  • Script прошло или не было, цвета зеленого и красного (желтый для работы)
  • Остановить при ошибке
  • Откройте script при ошибке
  • Запустите отчет со временем, полученным для каждого script
  • Общая продолжительность
  • Подключение тестовой базы данных
  • Asynchronus
  • .Net 4 и протестирован с SQL 2008
  • Один файл exe
  • Убейте соединение в любое время

Ответ 8

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

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

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

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

Ответ 9

@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: вышеперечисленные строки копируются в блокнот и сохраняются как летучая мышь.

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

Шаг 3: Дайте свой IP, идентификатор пользователя и пароль.

Ответ 10

Вы можете создать одиночный script, который вызывает все остальные.

Поместите следующее в пакетный файл:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

Когда вы запустите этот командный файл, он создаст новый script с именем all.sql в том же каталоге, где находится командный файл. Он будет искать все файлы с расширением .sql в том же каталоге, где находится командный файл.

Затем вы можете запустить все сценарии с помощью sqlplus user/pwd @all.sql (или расширить пакетный файл для вызова sqlplus после создания all.sql script)

Ответ 11

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

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

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

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

Ответ 12

Если вы можете использовать интерактивный SQL:

1 - Создайте файл .BAT с этим кодом:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - измените pwd и имя_сервера.

3 - Поместите файл .BAT в папку, содержащую файлы .SQL и запустите его.