將映像欄位資料匯出到檔案
在 Microsoft SQL Server 中,某些資料表可能包含儲存檔案資料的映像欄位。由於各種原因,可能需要提取這些文件資料(例如圖像)並將其保存到單獨的文件中。然而,直接從資料庫匯出這些數據可能具有挑戰性。
不幸的是,沒有內建的 SQL 腳本或函數允許將映像資料直接匯出到檔案。為此,您需要結合使用 T-SQL 語句和 OLE 自動化流程。
這裡有一個詳細的腳本,可讓您將圖像資料從表格匯出到單獨的檔案:
-- Write all database images (jpg) to file. --------- --------- --------- --------- --------- --------- --------- DECLARE CURSOR_ProductIds CURSOR FOR (SELECT ImgImagesId FROM ImgProductSample) DECLARE @ProductId INT; OPEN CURSOR_ProductIds FETCH NEXT FROM CURSOR_ProductIds INTO @ProductId WHILE (@@FETCH_STATUS <> -1) BEGIN DECLARE @ImageData varbinary(max); SELECT @ImageData = (SELECT convert(varbinary(max), ImageData, 1) FROM ProductImages WHERE Id = @ProductId); DECLARE @Path nvarchar(1024); SELECT @Path = 'C:\MyImages\Output'; DECLARE @Filename NVARCHAR(1024); SELECT @Filename = (SELECT ImageFilename FROM ProductImages WHERE id = @ProductId); DECLARE @FullPathToOutputFile NVARCHAR(2048); SELECT @FullPathToOutputFile = @Path + '\' + @Filename; DECLARE @ObjectToken INT EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT; EXEC sp_OASetProperty @ObjectToken, 'Type', 1; EXEC sp_OAMethod @ObjectToken, 'Open'; EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @ImageData; EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @FullPathToOutputFile, 2; EXEC sp_OAMethod @ObjectToken, 'Close'; EXEC sp_OADestroy @ObjectToken; FETCH NEXT FROM CURSOR_ProductIds INTO @ProductId END CLOSE CURSOR_ProductIds DEALLOCATE CURSOR_ProductIds -- Make sure the following statement is executed to enable file IO -- From http://msdn.microsoft.com/en-us/library/ms191188.aspx --------- --------- --------- --------- --------- --------- --------- sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO
該腳本使用ADO(ActiveX 資料物件)建立流物件並操作記憶體中的影像資料。然後,它使用流物件的 Open、Write 和 SaveToFile 方法將資料儲存到檔案中。
以上是如何將圖像欄位資料從 Microsoft SQL Server 匯出到單一檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!