답변:
다음 명령을 사용하여 .BAT 파일을 만듭니다.
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause
사용자 이름과 암호를 제공해야하는 경우
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P
password -i"%%G"
사용자 / 비밀번호가 제공되는 경우 "-E"는 필요하지 않습니다.
이 .BAT 파일을 .SQL 파일을 실행하려는 디렉토리에 넣고 .BAT 파일을 두 번 클릭하면 완료됩니다!
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P "password" -i"%%G"
SQL Management Studio에서 새 쿼리를 열고 아래와 같이 모든 파일을 입력합니다.
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
SQLCMD 모드를 클릭하십시오. 파일은 아래와 같이 회색으로 선택됩니다.
:r c:\Scripts\script1.sql
:r c:\Scripts\script2.sql
:r c:\Scripts\script3.sql
Management Studio에서 쿼리> SQLCMD 모드 옵션을 클릭하여 SQLCMD를 활성화했는지 확인합니다.
script1.sql,script2.sql,script3.sql,script4.sql
폴더에 4 개의 .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>
스크립트를 실행하려는 데이터베이스 로 바꾸는 것을 잊지 마십시오. 예를 들어 데이터베이스가 "Employee"인 경우 명령은 다음과 같습니다.
SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
PAUSE
동일한 파일을 두 번 클릭하여 배치 파일을 실행합니다.
-b
예 :SQLCMD -b -i "file 1.sql","file 2.sql"
ApexSQL Propagate를 사용할 수 있습니다 . 여러 데이터베이스에서 여러 스크립트를 실행하는 무료 도구입니다. 필요한만큼 스크립트를 선택하고 하나 또는 여러 데이터베이스 (여러 서버 포함)에 대해 실행할 수 있습니다. 스크립트 목록을 생성하고 저장 한 다음 생성 된 순서대로 동일한 스크립트를 실행할 때마다 해당 목록을 선택하기 만하면됩니다 (여러 스크립트 목록도 추가 할 수 있음).
스크립트와 데이터베이스를 선택하면 기본 창에 표시되며 "실행"버튼을 클릭하기 만하면 모든 스크립트가 선택한 데이터베이스에서 주어진 순서대로 실행됩니다.
일반 쿼리
아래 줄을 batch.bat 라는 이름으로 메모장에 저장하고 모든 스크립트 파일이있는 폴더 안에 넣습니다.
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
예
(* .sql)의 %% G에 대해 sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i "%% G"일시 중지
로그인에 실패한 경우 사용자 이름 과 비밀번호 와 함께 아래 코드를 사용하십시오.
for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause
(* .sql)의 %% G에 대해 sqlcmd / S NE8148server / d EMPLYEEDB -U Scott -P tiger -i "%% G"일시 중지
스크립트 파일이있는 폴더 안에 bat 파일을 만든 후 bat 파일을 클릭하면 스크립트가 실행됩니다.
저는 많은 SQL 파일을 끌어다 놓고 데이터베이스에 대해 실행할 수 있는 오픈 소스 유틸리티 를 C #으로 작성했습니다.
이 유틸리티에는 다음과 같은 기능이 있습니다.
내가 찾은 가장 쉬운 방법은 다음 단계를 포함했습니다 (유일한 요구 사항은 Win7 +에 있어야 함).
길게 들리지만 실제로는 매우 빠릅니다. (가장 작은 단계도 설명하는 한 오래 들립니다)
내가 아는 것은 osql 또는 sqlcmd 명령을 사용하여 여러 SQL 파일을 실행할 수 있습니다. 단점은 두 명령 모두에 대해 스크립트를 작성해야한다는 것입니다.
SQLCMD를 사용하여 여러 SQL Server 스크립트 실행
OSQL (SQL Server 2000 용)
http://msdn.microsoft.com/en-us/library/aa213087(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
)
1 단계 : 위의 줄은 메모장에 복사하여 bat로 저장합니다.
2 단계 : SQL Server에서 실행되는 쿼리의 모든 Sql 파일에있는 d 드라이브 abc 폴더.
3 단계 : IP, 사용자 ID 및 암호를 제공하십시오.
다른 모든 스크립트를 호출하는 단일 스크립트를 만들 수 있습니다.
다음을 배치 파일에 넣으십시오.
@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
).
동일한 디렉토리에서 모든 SQL 파일을 실행하려면 다음 명령을 사용하십시오.
ls | awk '{print "@"$0}' > all.sql
이 명령은 디렉토리의 모든 SQL 파일 이름에 "@"가 추가 된 단일 SQL 파일을 만듭니다.
를 all.sql
생성 한 후 all.sql
SQLPlus로 간단히 실행 하면 all.sql
.