sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008 の VARBINARY(MAX) フィールドからすべてのイメージをファイル システムにダンプする方法は?

    こちらのおかげで解決しました投稿 ...

    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
      

    注意してください -> BCP コマンドには、フォーマット ファイルが必要です。これはファイルの内容で、c:\Temp に配置しました (上記の BCP コマンドラインで説明したように)。

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

    そのフォーマットファイルに関する最後の注意..最後の行の後に新しい行が必要です。そうしないと、エラーが発生します。

    お楽しみください!



    1. 関係制約ごとにアクティブなのは1つだけ

    2. MySQLにウルドゥー語の文字を保存する

    3. PDOにLIKEクエリを実装する

    4. MySQLCREATEFUNCTION構文