SQL Server 2008의 Varbinary (Max) 필드에서 파일 시스템으로 모든 이미지를 버리는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/613154

문제

나는 테이블이 있습니다 IDENTITY 필드와 a VARBINARY(MAX) 그 안에 필드. 각각의 내용을 버릴 수있는 방법이 있습니까? VARBINARY(MAX) 필드 파일 시스템 (예 : c:\temp\images)?

테이블 스키마 :

PhotoId INTEGER NOT NULL IDENTITY
Image VARBINARY(MAX) NOT NULL
DateCreated SMALLDATETIME

산출:

c:\temp\images\1.png
c:\temp\images\2.png
c:\temp\images\3.png
... etc...

이것에 접근하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

감사합니다 이 게시물 ...

SET NOCOUNT ON

DECLARE @IdThumbnail INTEGER,
        @MimeType VARCHAR(100),
        @FileName VARCHAR(200),
        @Sqlstmt varchar(4000)


DECLARE Cursor_Image CURSOR FOR
    SELECT a.IdThumbnail
    FROM tblThumbnail a
    ORDER BY a.IdThumbnail

OPEN Cursor_Image
    FETCH NEXT FROM Cursor_Image INTO @IdThumbnail

    WHILE @@FETCH_STATUS = 0
    BEGIN

        -- Generate the file name based upon the ID and the MIMETYPE.
        SELECT @FileName = LTRIM(STR(@IdThumbnail)) + '.png'

        -- Framing DynamicSQL for XP_CMDshell            
        SET @Sqlstmt='BCP "SELECT OriginalImage 
                      FROM Appian.dbo.tblThumbnail 
                      WHERE IdThumbnail = ' + LTRIM(STR(@IdThumbnail)) +
                      '" QUERYOUT c:\Temp\Images\' + LTRIM(@FileName) + 
                      ' -T -fC:\Temp\ImageFormatFile.txt'
        print @FileName
        print @sqlstmt

        EXEC xp_cmdshell @sqlstmt
        FETCH NEXT FROM Cursor_Image INTO @IdThumbnail
    END

CLOSE Cursor_Image
DEALLOCATE Cursor_Image

참고 -> u BCP 명령에 대한 형식 파일이 있어야합니다. 이것은 파일의 내용이며 C : temp (위의 BCP 명령 선에 언급 된 바와 같이)에 배치했습니다.

10.0
1
1       SQLIMAGE            0       0       ""   1     OriginalImage                      ""

해당 형식 파일에 대한 최종 참고 사항 .. 마지막 줄 뒤에 새 줄이 있어야합니다. 그렇지 않으면 오류가 발생합니다.

즐기다!

다른 팁

가장 쉬운 (나를 위해)는 Varbinary 필드를 파일에 버린 작은 .NET 응용 프로그램을 작성하는 것입니다.

.NET에서 일하는 것에 반대하는 경우 (테스트하지 않은 경우) "Varbinary (Max) Filestream"유형의 새로운 열을 만들 수 있어야합니다. 해당 "RowGuidCol"열이 있는지 확인하십시오. 그런 다음 (이론적으로) 다음과 같은 작업을 수행 할 수 있습니다.

업데이트 테이블 세트 varfilestream_col = varbinary_col

그것이 나중에 효과가 있기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top