2016-09-02 80 views
1

問題:MS SQL(PDF)のvarbinaryカラムからデータを取り出す必要があります。Microsoft SQLのvarbinary(Max)からデータを取り出す方法

私は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の両方を選択し、新しいファイル名変数を使用します。

日付ではなく、スクリプトでファイル名を設定するときに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 
関連する問題