Import von Binär-Daten in den MS SQL-Server mit ADO

Der hier beschriebene Source-Code bezieht sich auf die Verwendung von VBScript. Die Verwendung in VB oder VBA ist analog.

Um Dateien als Binary importieren zu können muss zunächst eine Stream-Objekt erstellt werden, welches die zu importierende Datei repräsentiert:

 Dim strFile
 strFile = "C:\Temp\Test.jpg"
 Dim objStream
 Set objStream = CreateObject("ADODB.Stream")
 objStream.Open
 objStream.Type = adTypeBinary
 objStream.LoadFromFile(strFile)

Anschließend kann eine normale ADO Verbindung mit dem SQL-Server aufgebaut werden. In diesem Fall wird mit Windows-Authentifizierung eine Verbindung mit der Datenbank Test gemacht:

 Dim cnn, rst
 Set cnn = CreateObject("ADODB.Connection")
 cnn.Open "Provider=SQLOLEDB.1; Data Source=(local); " & "Integrated Security=SSPI;Initial Catalog=Test;"
 Set rst = CreateObject("ADODB.Recordset")

In dieser Datenbank ist eine Tabelle Table1 vorhanden, die über zwei Spalten verfügt: FileName und Bild, wobei Bild vom Datentyp image ist. Der Import wird in eine Transaktion gekapselt:

 cnn.BeginTrans
 rst.Open "Table1", cnn, adOpenForwardOnly, adLockOptimistic
 rst.AddNew
 rst.Fields("FileName").Value = strFile
 rst.Fields("Bild").AppendChunk(objStream.Read)
 rst.Update
 rst.close
 cnn.CommitTrans

Schließlich werden noch alle Objekte wieder freigegeben:

 ' Clean-Up
 objStream.Close
 cnn.Close
 Set rst = Nothing
 Set objStream = Nothing
 Set cnn = Nothing

Das komplette Skript kann auch als VBS-Datei gedownloaded werden.

Link: How to load a Binary File into an Oracle BLOB with ADO

Leave a Comment.