Es tut mir leid, wenn diese Frage bereits gestellt wurde, aber ich konnte sie nirgendwo finden. Ich habe eine Tabelle, die Dateien als BLOBS speichert. Die Spalte, die die Datei enthält, ist ein Bilddatentyp. Ich möchte in der Lage sein, die Binärdaten aus der Spalte zu extrahieren und in eine tatsächliche Datei umzuwandeln. Ich würde das am liebsten gerne mit BCP oder dem Managementstudio machen.Wie verwende ich BCP oder Sql Server Management Studio, um BLOB-Daten aus Sql Server zu holen?
Ich habe BCP versucht, aber aus irgendeinem Grund, wenn ich versuche, ein Office-Dokument herauszuziehen, denkt Word, dass es korrupt ist. Hier ist, was ich bisher versucht (offensichtlich die Werte geändert wurden, die Unschuldigen zu schützen :):
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -n -S server -U username -P password
Dies allerdings nicht funktioniert? Irgendwelche Gedanken?
Bearbeiten Es stellt sich heraus, dass Sie die n-native Flag nicht benötigen. Außerdem versucht BCP ein 4-Byte-Präfix standardmäßig auf der Bildspalte enthalten - Sie wollen tatsächlich diesen Satz auf 0.
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -S server -U username -P password
Enter the file storage type of field document_binary [image]: Enter prefix-length of field document_binary [4]: 0 Enter length of field document_binary [0]: Enter field terminator [none]:
ich Aaron, tun wir eigentlich alle unsere Dokumente auf dem Dateisystem speichern für 95 % unserer Bewerbung. Es gibt ein Bit, das immer noch Blobs verwendet :( – Eric
Sie müssen die Formatdatei nicht mit der Feldlänge vorbelegen; das folgende funktioniert für mich (Zeilenumbrüche nach '9.0' und der folgenden' 1'): '9.0 1 SQLBINARY 0 0" "1 Spalte1" "' – Geoff
@Aaron - anscheinend gibt es eine Menge Probleme mit dem Export von varbinary (max) in Datei. (Ich habe es gerade mit C# beendet - nach 3 Stunden zu versuchen mach es mit BCP). (Das Problem ist mit 'Refix-Länge von Feld document_binary', die auf '0' gesetzt werden sollte - aber es erfordert Benutzerinteraktion.) Es kann auch mit FMT-Datei getan werden., aber was, wenn ich nicht habe Zugriff auf die FMT-Datei - gibt es eine Möglichkeit, den fmt-Inhalt innerhalb des bcp-Befehls "inline" zu verwenden? –