2016-09-02 2 views
1

문제점 : MS SQL (PDF)의 varbinary 열에서 데이터를 추출해야합니다.Microsoft SQL에서 varbinary (최대) 데이터를 꺼내는 방법

나는 Script to save varbinary data to disk

여기에서이 스크립트

DECLARE @SQLIMG VARCHAR(MAX), 
    @IMG_PATH VARBINARY(MAX), 
    @TIMESTAMP VARCHAR(MAX), 
    @ObjectToken INT 

DECLARE IMGPATH CURSOR FAST_FORWARD FOR 
     SELECT csl_CompanyLogo from mlm_CSCompanySettingsLocalizations 

OPEN IMGPATH 

FETCH NEXT FROM IMGPATH INTO @IMG_PATH 

WHILE @@FETCH_STATUS = 0 
    BEGIN 
     SET @TIMESTAMP = 'd:\' + replace(replace(replace(replace(convert(varchar,getdate(),121),'-',''),':',''),'.',''),' ','') + '.bmp' 

     PRINT @TIMESTAMP 
     PRINT @SQLIMG 

     EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT 
     EXEC sp_OASetProperty @ObjectToken, 'Type', 1 
     EXEC sp_OAMethod @ObjectToken, 'Open' 
     EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH 
     EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @TIMESTAMP, 2 
     EXEC sp_OAMethod @ObjectToken, 'Close' 
     EXEC sp_OADestroy @ObjectToken 

     FETCH NEXT FROM IMGPATH INTO @IMG_PATH 
    END 

CLOSE IMGPATH 
DEALLOCATE IMGPATH 

을 사용했지만 지금은 내가 파일 이름이 읽기 쉽게 만들 수있는 방법을 궁금해? 예를 들어 id 열의 레코드를 사용합니다.

p.s. 내가 tsql 태그를 배치해야합니까?

+0

당신이 읽을 수 무엇을 의미합니까? 파일 이름을 어떻게 보이게할까요? 그리고이 ID 열은 어디에 사용 하시겠습니까? – BeanFrog

+0

그래서 예를 들어 : 나는 파일과'FileName' 열과'vabinary' 열을 가진다. 나는'varbinary'에서 파일을 추출하여'FileName'으로 이름 짓고 싶습니다. –

답변

1

맨 위에 파일 이름 열과 동일한 유형의 새 변수를 추가하십시오.

커서를 변경하여 varbinary와 파일 이름을 모두 선택하고 새 파일 이름 변수를 사용하십시오.

날짜 대신 스크립트에서 파일 이름을 설정할 때 filename 변수를 사용하십시오.

스크립트가된다 :

DECLARE @SQLIMG VARCHAR(MAX), 
    @IMG_PATH VARBINARY(MAX), 
    @TIMESTAMP VARCHAR(MAX), 
    @ObjectToken INT, 
    @Filename varchar(max) 

DECLARE IMGPATH CURSOR FAST_FORWARD FOR 
     SELECT csl_CompanyLogo, [filename] from mlm_CSCompanySettingsLocalizations 

OPEN IMGPATH 

FETCH NEXT FROM IMGPATH INTO @IMG_PATH , @Filename 

WHILE @@FETCH_STATUS = 0 
    BEGIN 
     SET @TIMESTAMP = 'd:\' + @Filename + '.bmp' 

     PRINT @TIMESTAMP 
     PRINT @SQLIMG 

     EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT 
     EXEC sp_OASetProperty @ObjectToken, 'Type', 1 
     EXEC sp_OAMethod @ObjectToken, 'Open' 
     EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH 
     EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @TIMESTAMP, 2 
     EXEC sp_OAMethod @ObjectToken, 'Close' 
     EXEC sp_OADestroy @ObjectToken 

     FETCH NEXT FROM IMGPATH INTO @IMG_PATH , @Filename 
    END 

CLOSE IMGPATH 
DEALLOCATE IMGPATH 
관련 문제