sql >> Databáze >  >> RDS >> Sqlserver

Jak vypsat všechny naše obrázky z pole VARBINARY(MAX) v SQL Server 2008 do souborového systému?

Přišel jsem na to díky tomu příspěvek ...

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

Vezměte prosím na vědomí -> pro příkaz BCP musíte mít soubor formátu. Toto je obsah souboru a umístil jsem ho do c:\Temp (jak je uvedeno v příkazovém řádku BCP výše).

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

Poslední poznámka k tomuto formátu souboru .. ZA POSLEDNÍM ŘÁDKEM MUSÍ BÝT NOVÝ ŘÁDEK. jinak se zobrazí chyba.

Užijte si to!



  1. Jak odesílat e-maily ze serveru SQL (T-SQL)

  2. MySql, kombinující sloupec data a času do časového razítka

  3. Použití JShell v Javě 9 v NetBeans 9.0, část 4

  4. Jak efektivně najít nejbližší místa v blízkosti daného místa