Bei einem unserer Kunden, wurden bis jetzt Dateien auf der DB (Sql Server 2005) als XML abgespeichert:

<Document>

<FileName></FileName>
<FileType></FileType>
<CreatedAt></CreatedAt>
<Data></Data>

</Document>

Das <Data> Feld wurde natürlich mit base64 encoded damit man schön XML reinschreiben und auslesen konnten.

Da der Vortschritt aber auch hier einzug gehalten hat, gibt es jetzt auch hier eine eigene Tabelle mit einem Blob für <Data>. Dabei stellte sich nur die Frage wie man jetzt am besten von base64 auf Blob migriert. Folgenden netten XQuery befehl habe ich hierfür gefunden:

Documents.value(‘xs:base64Binary(/*:Documents[1]/*:Document[1]/*:Data[1])’, ‘varbinary(MAX)’)

English:

One of our customer used XML to save files inside there DB (Sql Server 2005):

<Document>

<FileName></FileName>
<FileType></FileType>
<CreatedAt></CreatedAt>
<Data></Data>

</Document>

The <Data> field was of course base64 encoded to make it easy to read and write XML files form it.

After some progress they managed to save the data into a new table with an Blob field for <Data>, but the tricky part was: how to get the base64 data into the Blob field,… during some research I found the following XQuery command.

Documents.value(‘xs:base64Binary(/*:Documents[1]/*:Document[1]/*:Data[1])’, ‘varbinary(MAX)’)