디렉터리 및 해당 하위 디렉터리의 모든 * .sql 스크립트를 실행하기 위해 실행할 수있는 DOS 명령 또는 배치 (.bat) 파일이 필요합니다. 해결책은 무엇입니까?디렉터리 및 하위 디렉터리의 모든 SQL 스크립트를 실행하는 DOS 명령
답변
다음은 현재의 모든 디렉토리에있는 SQL 파일과 모든 하위 디렉토리의 이름을 인쇄합니다 명령 줄에서
for /r %f in (*.sql) do echo %f
실행을 시작할 수 있습니다.
그런 다음 echo %f
을 sqlcmd <connection args> -i%f
으로 대체하여 스크립트를 실행하십시오.
희망이 도움이됩니다.
루프를 시도하십시오 for
. 이 명령의 옵션은 진화 내가 사용하지만, DOS 포함 "윈도우 XP에서 cmd.exe
"가정하는 DOS의 버전을 모르겠어요, 이런 일이 일할 수 :
for /r . %f in (*.sql) do @echo %f
좋아,이 것 파일의 이름 만 인쇄하십시오. 이미 명령 행에서 실행할 수있는 프로그램이 있으리라 가정합니다 대신 사용할 수있는 하나의 SQL 파일을 실행합니다.
자세한 내용은 for /?
을 참조하십시오.
for %f in ("c:\path\to\dir\*.sql") do sqlcmd -S [SERVER_NAME] -d [DATABASE_NAME] -i "%f" -b
여기 있습니다. 이 배치 파일은 디렉토리와 그 서브 디렉토리에있는 모든 sql 파일을 실행합니다. 또한 결과와 함께 output.txt 파일을 생성하여 오류 및 기타 등등을 볼 수 있습니다. 배치 파일에 대한 일부 참고 사항 :
- [YourDatabase]는 스크립트를 실행하려는 데이터베이스의 이름입니다.
- [YourPath]는 모든 스크립트를 보관하는 경로입니다.
- [경우 yourservername \ YourInstanceName을]은 '\' 이
- 당신은 당신의 서버 에 적합한 어떤 각 변수에 대한 '='후 텍스트를 대체 할 것으로 분리 된 SQL 서버 이름 및 인스턴스 이름입니다
- 는
- 는
이있다 [YourPath] 있는지 확인 [YourPath] 주변에 어떤 따옴표를 넣지 마십시오 '='주위에 공간을 반드시 넣어하지가 수 '\'마지막
SET 데이타베이스 = [YourDatabase]
,SET ScriptsPath = YourPath]
SET의 ServerInstance = 경우 yourservername \ YourInstanceName을]
IF EXIST "% ScriptsPath 경우 output.txt %"델 "% ScriptsPath 경우 output.txt %"
형 NUL> "% ScriptsPath 경우 output.txt %"
/R "의 ScriptsPath %의 %"%% G IN (* .SQL) DO (SQLCMD % -d % 데이터베이스 -S % ServerInstance % -i "% FOR % G "-o"%% G.txt "
echo ........................................... .......................................... ""% ScriptsPath % 출력. TXT "
가 실행 에코"%% G ">>"% ScriptsPath 경우 output.txt % "
에코 ..................... .................................................. .............. ""% ScriptsPath % output.txt "
"% ScriptsPath % output.txt "+"%% G.txt ""% ScriptsPath % output .txt "
del"%% G.txt "
)
내가 가진
'SET' 뒤에 다음 줄을 추가하면 후행 백 슬래시가 생깁니다 :'IF NOT % ScriptsPath : ~ -1 % == "\"SET ScriptsPath = % ScriptsPath % \' –
다운 투표를해야 하는가? 어떻게 이럴 수있어? 진심으로, 당신이 내 대답을 좋아하지 않는다면, 아니면 당신이 내게 알려 줄 수 있나? 우리는 모두 배울 수있는 곳입니다. –
그것은 나를 위해 작동하지 않았다 – ob213
공백없이 디렉터리와 파일 이름을 사용해보십시오. (편리 할 수도 있습니다 http://www.den4b.com/?x=downloads&product=renamer) – mbmihura