MSSQL - File/Folder 생성 되었는지 확인 ( xp_DirTree / xp_subdirs / xp_fileexist )
[File/Folder 확인 방법]
- 디스크 구조 : 'D:\TEST\TEST_SUB\TEST_SUB_FILE.txt'
- xp_SubDirs : 하위 디렉토리가 있는지 확인
- 사용법 : EXEC master.dbo.xp_SubDirs (위치)
- 결과 : 하위 폴터가 있는경우 - 하위 폴더 명을 리턴 하위 폴터가 없는 경우 - 공백 리턴
INSERT INTO #SubDirs (subdirectory) EXEC master.dbo.xp_SubDirs 'D:\TEST\' --Select * FROM #SubDirs if exists ( Select * FROM #SubDirs ) begin select 'Action !!' end drop table #SubDirs
- xp_DirTree : 폴더/파일 있는지 확인
- 사용법 : EXEC master.dbo.xp_DirTree (위치), (depth), (파일유무)
- 파일 유무가 0인 경우(폴터 확인의 경우), 리턴값이 2개
- 현재 위치의 파일 리스트 확인 - EXEC Master.dbo.xp_DirTree 'D:\TEST\',1,1
- 하위 2 depth 까지의 파일 리스트 확인 - EXEC Master.dbo.xp_DirTree 'D:\TEST\',2,1
- 하위 1 depth 까지의 폴터 리스트 확인 - EXEC Master.dbo.xp_DirTree 'D:\TEST\',1,0
- 하위 2 depth 까지의 폴더 리스트 확인 - EXEC Master.dbo.xp_DirTree 'D:\TEST\',2,0
- 결과 : 파일이 있는 경우 - 파일 리스트 리턴 하위 폴더가 있는 경우 - 하위 폴더명을 리턴
-- 파일 확인
CREATE TABLE #DirTree (folder varchar(100), Depth INT, isFile bit)
INSERT INTO #DirTree (folder, Depth, isFile)
EXEC master.dbo.xp_DirTree 'D:\TEST\',1,1
SELECT * FROM #DirTree
drop table #DirTree
-- 폴더 확인
CREATE TABLE #DirTree (folder varchar(100), Depth INT)
INSERT INTO #DirTree (folder, Depth)
EXEC master.dbo.xp_DirTree 'D:\TEST\',1,0
SELECT * FROM #DirTree
drop table #DirTree
- xp_fileexist : 폴더/파일 있는지 확인
- 사용법 : EXEC master.dbo.xp_fileexist (위치)
- 결과 : 파일이 있는 경우 FileExists 1 리턴 폴터가 있는 경우 IsDirectory 1 리턴
CREATE TABLE #folders (FileExists int, IsDirectory int, ParentDirExists int)
INSERT INTO #folders
--EXEC master.dbo.xp_fileexist 'D:\TEST\TEST_SUB\TEST_SUB_FILE.txt' --파일인 경우
EXEC master.dbo.xp_fileexist 'D:\TEST\TEST_SUB\'
IF EXISTS(SELECT IsDirectory FROM #folders WHERE IsDirectory=1)
PRINT 'File/Folder exists !!'
ELSE
PRINT 'File/Folder not exists'
DROP TABLE #folders
댓글
댓글 쓰기