weltklasse
Goto Top

MS SQL-Server mit TSQL Bilddateien importieren

Ich habe eine Tabelle, in der in einem Feld ("Bildlink") ein Pfad zu einer Bild-JPG-Datei weggeschrieben ist.

Da die Tabelle mehrere 10.000 Datensätze enthält, benötige ich eine TSQL-Abfrage, mit der ich
die Bilder aus dem Pfad in ein Feld ("Bildimport") importieren kann.

So sieht die Tabelle aus:

CREATE TABLE [hsv].[dbo].[w_Bilddatei]
(Artikel_GUID uniqueidentifier null
,ArtikelNummer nvarchar(100) null
,Bildimport varbinary(max) null
,Bildlink nvarchar(100) null
) ON [PRIMARY];
GO

SELECT * FROM [hsv].[dbo].[w_Bilddatei]

Artikel_GUID ArtikelNummer Bildimport Bildlink
6EF40F0C-19B8-470D-AAB5-4B0C361B6F76 010379019 D:\Daten\Bilder\61313.jpg
5F4884D9-E0CA-4117-8C4F-F733C703DEA4 010379030 D:\Daten\Bilder\61329.jpg
FF1E3C05-72F8-4F91-BC5F-C87EA05BBB31 010379040 D:\Daten\Bilder\61478.jpg
752C4620-4FCB-4D66-8C99-9F1ED0E476BA 010379075 D:\Daten\Bilder\61617.jpg
A60786F9-6D5A-4630-B9C1-03AEECCEB31B 010825582 D:\Daten\Bilder\61101.jpg
E4D31FAE-FB9E-4767-8671-7CD16FA9506F 010825589 D:\Daten\Bilder\61009.jpg

Könnt Ihr mir mit einem Script helfen, wie ich die Bilddateien aus dem Pfad ("Bildlink") in das Feld "Bildimport" importieren kann.

Vielen für Eure Hilfe.

Content-Key: 42730335576

Url: https://administrator.de/contentid/42730335576

Printed on: July 24, 2024 at 09:07 o'clock

Member: ukulele-7
ukulele-7 Jul 24, 2024 updated at 06:59:21 (UTC)
Goto Top
Also, der SQL Server Dienst soll die Datei vom Dateisystem lesen und in der Tabelle als VARBINARY speichern? Ich würde sagen das geht in diese Richtung:
https://stackoverflow.com/questions/1643627/how-to-insert-a-blob-into-a- ...

Du wirst vermutlich einen Cursor bauen müssen, ich glaube nicht, das es anders mit mehreren Dateien auf einmal geht. Bei der Menge würde man das auch nicht wollen.
Member: weltklasse
weltklasse Jul 24, 2024 at 07:05:21 (UTC)
Goto Top
Mit dem Befehl funktioniert der Import von einem Bild:

UPDATE [hsv].[dbo].[w_Bilddatei]

SET Bild = (SELECT BulkColumn FROM OPENROWSET (BULK 'D:\Daten\Bilder\61313.jpg', SINGLE_BLOB) AS x
WHERE Objekt = '6EF40F0C-19B8-470D-AAB5-4B0C361B6F76'

Die Frage ist, wie es automatisiert funktioniert, es sind mehrere 10.000 Datensätze???
Member: ukulele-7
ukulele-7 Jul 24, 2024 at 07:41:56 (UTC)
Goto Top
Sry ich kann dir aus Zeitgründen nur einen guten Link geben:
https://www.mssqltips.com/sqlservertip/1599/cursor-in-sql-server/

Cursor ist aber eigentlich nicht sonderlich schwer. Im Select lädst du alle gewünschten Daten und schreibst aus dem Ergebnis immer die Daten einer Zeile in Variablen. Dann führst du deinen Befehl aus und lädst die nächste Zeile.
Member: godlie
godlie Jul 24, 2024 at 09:01:11 (UTC)
Goto Top
Hallo,

man will keine Bilder in der Datenbank ! Das kostet unnötig Resourcen ( RAM ), wenn eine Versionierung von Binärdateien gebraucht wird, macht man das auf FileSystem Ebene ( z.b. git ) und speichert sich nur den Pfad in der Datenbank ab.

grüße
Member: weltklasse
weltklasse Jul 24, 2024 at 09:06:30 (UTC)
Goto Top
Leider bekomme ich das script auch nicht mit den Cursor-Erklärungen hin.

Kann mir jemand helfen?