Heim >Datenbank >MySQL-Tutorial >Wie exportiere ich Bildfelddaten von Microsoft SQL Server in einzelne Dateien?

Wie exportiere ich Bildfelddaten von Microsoft SQL Server in einzelne Dateien?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-27 03:53:37136Durchsuche

How to Export Image Field Data from Microsoft SQL Server to Individual Files?

Bildfelddaten in eine Datei exportieren

In Microsoft SQL Server können einige Tabellen Bildfelder enthalten, die Dateidaten speichern. Diese Dateidaten, beispielsweise Bilder, müssen aus verschiedenen Gründen möglicherweise extrahiert und in einzelnen Dateien gespeichert werden. Der direkte Export dieser Daten aus einer Datenbank kann jedoch eine Herausforderung sein.

Leider gibt es kein integriertes SQL-Skript oder eine integrierte SQL-Funktion, die den direkten Export von Bilddaten in eine Datei ermöglicht. Um dies zu erreichen, müssen Sie eine Kombination aus T-SQL-Anweisungen und OLE-Automatisierungsverfahren verwenden.

Hier ist ein detailliertes Skript, mit dem Sie Bilddaten aus einer Tabelle in separate Dateien exportieren können:

-- 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

Dieses Skript verwendet ADO (ActiveX Data Objects), um ein Stream-Objekt zu erstellen und die Bilddaten im Speicher zu bearbeiten. Anschließend werden die Daten mit den Methoden Open, Write und SaveToFile des Stream-Objekts in einer Datei gespeichert.

Das obige ist der detaillierte Inhalt vonWie exportiere ich Bildfelddaten von Microsoft SQL Server in einzelne Dateien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn