Запустите все файлы SQL в каталоге
-
24-09-2019 - |
Вопрос
У меня есть несколько файлов .sql, которым я должен работать, чтобы применить изменения, сделанные другими разработчиками на базе данных SQL Server 2005. Файлы называются в соответствии со следующим рисунком:
0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...
Есть ли способ запустить всех из них в одном ходу?
Решение
Создайте файл .bat со следующей командой:
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause
Разместите этот файл .bat в каталоге, с которого вы хотите выполнить файлы .sql, дважды щелкните файл .bat, и вы закончите!
Другие советы
Использовать ДЛЯ. Отказ Из командной строки:
c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
В SQL Management Studio откройте новый запрос и введите все файлы, как показано ниже
:r c:\Scripts\script1.sql :r c:\Scripts\script2.sql :r c:\Scripts\script3.sql
- Перейдите в меню «Запрос» на студии управления SQL и убедитесь, что режим SQLCMD включен
Нажмите на режим SQLCMD; Файлы будут выбраны в серых, как показано ниже
:r c:\Scripts\script1.sql :r c:\Scripts\script2.sql :r c:\Scripts\script3.sql
- Теперь выполнить
Убедитесь, что у вас есть SQLCMD, включенные, нажав на опцию режима запроса> SQLCMD в студии управления.
Предположим, у вас есть четыре файла .sql (
script1.sql,script2.sql,script3.sql,script4.sql
) в папкеc:\scripts
.Создайте основной файл сценария (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>
С базой данных вы хотите выполнить свои сценарии. Например, если база данных «Сотрудник», команда будет следующим:SQLCMD -E -dEmployee -ic:\Scripts\Main.sql PAUSE
Выполните пакетный файл, дважды щелкнув то же самое.
Вы могли бы использовать PROPAGATE APEXSQL. Отказ Это бесплатный инструмент, который выполняет несколько сценариев на нескольких базах данных. Вы можете выбрать столько сценариев, сколько вам нужно, и выполнить их на одну или несколько баз данных (даже несколько серверов). Вы можете создавать список скриптов и сохранить его, а затем просто выберите этот список каждый раз, когда вы хотите выполнить те же сценарии в созданном порядке (также можно добавить несколько списков сценариев):
Когда выбираются скрипты и базы данных, они будут отображаться в главном окне, и все, что вам нужно сделать, это нажать кнопку «Выполнить», и все сценарии будут выполняться на выбранных базах данных в данном порядке:
Общий запрос
Сохраните следующие строки в блокноте с именем batch.bat.bat. и место внутри папки, где все ваш файл сценария там
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
ПРИМЕР
Для %% g в (* .sql) do sqlcmd / s Nfgddd23432. / D. Emplyeedb. -Я "%% 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. -У Соревнование -П тигр -Я "%% g" пауза
После создания файла летучей мыши внутри папки, в которой файлы сценария просто нажмите на файл Bat, ваши скрипты будут выполняться
я написал Утилита с открытым исходным кодом В C #, который позволяет перетаскивать множество файлов SQL и начать запустить их против базы данных.
Утилита имеет следующие особенности:
- Перетащите файлы скрипта
- Запустите каталог файлов сценариев
- SQL Script OUT Положите сообщения во время выполнения
- Сценарий прошел или не удалось, что цветные зеленые и красные (желтые для бега)
- Остановитесь на опцию ошибки
- Откройте скрипт на вариант ошибки
- Запустите отчет со временем для каждого сценария
- Общая продолжительность времени
- Испытание DB соединение
- Асинхрон
- .Net 4 и проверено с SQL 2008
- Один EXE-файл
- Убить соединения в любое время
То, что я знаю, вы можете использовать команды OSQL или SQLCMD для выполнения нескольких файлов SQL. Недостаток - это то, что вам придется создать скрипт как для команд.
Использование SQLCMD для выполнения нескольких сценариев SQL Server
OSQL (это для SQL Server 2000)
http://msdn.microsoft.com/en-us/library/aaa213087(v=sql.80).aspx.
@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
)
STEPT1: Вышеуказанные линии копия в применение, сохраните его как BAT.
Шаг2: В папке D DRIVE ABC во всех файлах SQL в запросах выполняется в SQL Server.
Шаг3: Дайте свой IP, идентификатор пользователя и пароль.
Вы можете создать один скрипт, который звонит всем остальным.
Поместите следующее в пакетный файл:
@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"
Когда вы запустите этот пакетный файл, он создаст новый скрипт с именем all.sql
в том же каталоге, где находится пакетный файл. Это будет искать все файлы с расширением .sql
в том же каталоге, где находится пакетный файл.
Затем вы можете запустить все сценарии, используя sqlplus user/pwd @all.sql
(или продлить файл партии, чтобы позвонить sqlplus
После создания all.sql
скрипт)
Для выполнения каждого SQLFile в том же каталоге используйте следующую команду:
ls | awk '{print "@"$0}' > all.sql
Эта команда создаст один файл SQL с именами каждого файла SQL в каталоге, добавленном «@».
После all.sql
создан просто выполнение all.sql
С SQLPLUS это будет выполнять каждый файл SQL в all.sql
.
Если вы можете использовать Interactive 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 и ServerName.
3 - Поместите файл .bat в папке, которая содержит файлы .sql и запустить его.