NEWS

[DATABASE] Hướng dẫn import và export hình ảnh image từ Sqlserver

[DATABASE] Hướng dẫn import và export hình ảnh image từ Sqlserver
Đăng bởi: Thảo Meo - Lượt xem: 7673 16:20:21, 05/07/2022C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẻ hướng dẫn các bạn cách import và export hình ảnh trong cơ sở dữ liệu sqlserver.

[DATABASE] Simple Import and Export Image in SQL SERVER

Đầu tiên, các bạn tạo 1 table Pictures, để lưu trữ 3 thông tin sau

  1. Tên file ảnh
  2. Đường dẫn hình ảnh
  3. Data binary của hình ảnh
CREATE TABLE Pictures (
   pictureName NVARCHAR(40) PRIMARY KEY NOT NULL
   , picFileName NVARCHAR (100)
   , PictureData VARBINARY (max)
   )
GO

Tiếp đến, bạn cần phân quyền truy cập vào OLE Automation Procedures, các bạn chạy câu lệnh SQL bên dưới.

Use master
Go
EXEC sp_configure 'show advanced options', 1; 
GO 
RECONFIGURE; 
GO 
EXEC sp_configure 'Ole Automation Procedures', 1; 
GO 
RECONFIGURE; 
GO
ALTER SERVER ROLE [bulkadmin] ADD MEMBER [Enter here the Login Name that will execute the Import] 
GO  

1. Tạo procedure để import hình ảnh vào sqlserver

CREATE PROCEDURE dbo.usp_ImportImage (
     @PicName NVARCHAR (100)
   , @ImageFolderPath NVARCHAR (1000)
   , @Filename NVARCHAR (1000)
   )
AS
BEGIN
   DECLARE @Path2OutFile NVARCHAR (2000);
   DECLARE @tsql NVARCHAR (2000);
   SET NOCOUNT ON
   SET @Path2OutFile = CONCAT (
         @ImageFolderPath
         ,'\'
         , @Filename
         );
   SET @tsql = 'insert into Pictures (pictureName, picFileName, PictureData) ' +
               ' SELECT ' + '''' + @PicName + '''' + ',' + '''' + @Filename + '''' + ', * ' + 
               'FROM Openrowset( Bulk ' + '''' + @Path2OutFile + '''' + ', Single_Blob) as img'
   EXEC (@tsql)
   SET NOCOUNT OFF
END
GO

2. Tiếp tục, tạo mới một procedure để xuất hình ảnh từ sql ra folder

CREATE PROCEDURE dbo.usp_ExportImage (
   @PicName NVARCHAR (100)
   ,@ImageFolderPath NVARCHAR(1000)
   ,@Filename NVARCHAR(1000)
   )
AS
BEGIN
   DECLARE @ImageData VARBINARY (max);
   DECLARE @Path2OutFile NVARCHAR (2000);
   DECLARE @Obj INT
 
   SET NOCOUNT ON
 
   SELECT @ImageData = (
         SELECT convert (VARBINARY (max), PictureData, 1)
         FROM Pictures
         WHERE pictureName = @PicName
         );
 
   SET @Path2OutFile = CONCAT (
         @ImageFolderPath
         ,'\'
         , @Filename
         );
    BEGIN TRY
     EXEC sp_OACreate 'ADODB.Stream' ,@Obj OUTPUT;
     EXEC sp_OASetProperty @Obj ,'Type',1;
     EXEC sp_OAMethod @Obj,'Open';
     EXEC sp_OAMethod @Obj,'Write', NULL, @ImageData;
     EXEC sp_OAMethod @Obj,'SaveToFile', NULL, @Path2OutFile, 2;
     EXEC sp_OAMethod @Obj,'Close';
     EXEC sp_OADestroy @Obj;
    END TRY
    
 BEGIN CATCH
  EXEC sp_OADestroy @Obj;
 END CATCH
 
   SET NOCOUNT OFF
END
GO

Ví dụ: Bạn có một hình Dargon.jpg bên dưới đây

tip_4963.001

Để import vào sqlserver, các bạn thực hiện lệnh sau:

exec dbo.usp_ImportImage 'DRAGON','C:\MyPictures\Input','Dragon.jpg' 

Kết quả, dữ liệu sẻ được lưu vào database sqlserver như hình bên dưới.

tip_4963.002

Khi các bạn muốn xuất hình ảnh từ sql ra thư mục các bạn thực hiện như sau

exec dbo.usp_ExportImage 'DRAGON','C:\MyPictures\Output','Dragon.jpg'

 

Thanks for waching!

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[DATABASE] Hướng dẫn import và export hình ảnh image từ Sqlserver
Đăng bởi: Thảo Meo - Lượt xem: 7673 16:20:21, 05/07/2022C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.