Mengeksport Data Medan Imej ke Fail
Dalam Microsoft SQL Server, sesetengah jadual mungkin mengandungi medan imej yang menyimpan data fail. Data fail ini, seperti imej, mungkin perlu diekstrak dan disimpan ke fail individu atas pelbagai sebab. Walau bagaimanapun, mengeksport data ini terus daripada pangkalan data boleh menjadi mencabar.
Malangnya, tiada skrip atau fungsi SQL terbina dalam yang membenarkan eksport terus data imej ke fail. Untuk mencapai matlamat ini, anda perlu menggunakan gabungan pernyataan T-SQL dan Prosedur Automasi OLE.
Berikut ialah skrip terperinci yang membolehkan anda mengeksport data imej daripada jadual ke dalam fail berasingan:
-- 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
Skrip ini menggunakan ADO (ActiveX Data Objects) untuk mencipta objek strim dan memanipulasi data imej dalam ingatan. Ia kemudian menyimpan data ke fail menggunakan kaedah Open, Write dan SaveToFile bagi objek strim.
Atas ialah kandungan terperinci Bagaimana untuk Mengeksport Data Medan Imej dari Pelayan Microsoft SQL ke Fail Individu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!