SQL/MS-SQL & SQL Server Management Studio

[ms-sql] mssql 이미지 저장 / image to jpg, png

삐뚤어진 개발자 2020. 10. 8.

ms sql 이미지 저장하는 방법

아래의 쿼리를 사용하면 이미지를 저장할 수 있습니다. 

(ms sql 2008 사용중입니다. )

 

sp_configure 'show advanced options', 1; 
GO

sp_configure 'Ole Automation Procedures', 1; 
GO 

RECONFIGURE; 
GO

DECLARE @outPutPath varchar(50) = 'C:\TEST_IMG'
, @i bigint
, @init int
, @data varbinary(max)
, @fPath varchar(max)
, @folderPath  varchar(max)

--Get Data into temp Table variable so that we can iterate over it
DECLARE @Doctable TABLE (id int identity(1,1), [Doc_Num]  varchar(100) , [FileName]  varchar(100), [Doc_Content] varBinary(max) )

INSERT INTO @Doctable( [FileName],[Doc_Content])
--Select PRSNNUM , [STUDENTNAME],[STUDENTPHOTO] FROM  [dbo].[HU254T]
SELECT  B.PRSNNM, A.IMGFILE FROM HU254T A 
	INNER JOIN HU250T B 
		ON A.PRSNNUM = B.PRSNNUM

--SELECT * FROM @table

SELECT @i = COUNT(1) FROM @Doctable

WHILE @i >= 1
BEGIN

    SELECT
     @data = [Doc_Content],
     @fPath = @outPutPath  + '\' +[FileName]+'.jpg',
     @folderPath = @outPutPath 
    FROM @Doctable WHERE id = @i

  --Create folder first
  --EXEC  [dbo].[CreateFolder]  @folderPath

  EXEC sp_OACreate 'ADODB.Stream', @init OUTPUT; -- An instace created
  EXEC sp_OASetProperty @init, 'Type', 1;
  EXEC sp_OAMethod @init, 'Open'; -- Calling a method
  EXEC sp_OAMethod @init, 'Write', NULL, @data; -- Calling a method
  EXEC sp_OAMethod @init, 'SaveToFile', NULL, @fPath, 2; -- Calling a method
  EXEC sp_OAMethod @init, 'Close'; -- Calling a method
  EXEC sp_OADestroy @init; -- Closed the resources

  print 'Document Generated at - '+  @fPath

--Reset the variables for next use
SELECT @data = NULL
, @init = NULL
, @fPath = NULL
, @folderPath = NULL
SET @i -= 1
END

 

 

참고로, 먼저 경로에 맞는 폴더를 생성해주고 쿼리를 실행해야 합니다.

 

@outPutPath는 생성한 폴더 경로가 들어가야 됩니다.

 

@Doctable  임시 테이블에 들어갈 쿼리를 작성해줘야하는데, 아래와 같이 출력되도록 조회 쿼리를 작성하시면 됩니다.

 

 

 

 

 

최종적으로 쿼리를 작성하게 되면 아래와 같이 jpg 파일, 이름명으로 저장되었습니다.

 

 

 

 

 

긴글 읽어 주셔서 감사합니다.

더 궁금하신 사항은 댓글로 문의해주시면 빠르게 답변드리겠습니다.

 

 

댓글