Wie kann ich die Verwendung von BCP oder Sql Server Management Studio erhalten Sie BLOB-Daten aus Sql Server?
Tut mir Leid, wenn diese Frage wurde schon gefragt, aber ich konnte nicht finden es überall. Ich habe eine Tabelle, die speichert Dateien als BLOBS. Die Spalte, die hält die Datei ist eine image-Datentyp. Ich würde gerne in der Lage, extrahieren Sie daraus die Binär-Daten aus der Spalte und schalten Sie ihn in eine tatsächliche Datei. Ich würde am Liebsten in der Lage sein, dies zu tun mit BCP oder management studio, wenn möglich.
Ich habe versucht, BCP, aber aus irgendeinem Grund, wenn ich versuche, und ziehen Sie ein office-Dokument Word denkt, dass es korrupt ist. Hier ist, was ich bisher ausprobiert habe (natürlich 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
Funktioniert das nicht obwohl? Irgendwelche Gedanken?
Bearbeiten Stellt sich heraus, Sie brauchen nicht die-n native-flag. Auch, BCP versucht, um eine 4-byte-Präfix standardmäßig auf die image-Spalte - Sie wollen tatsächlich, dass dieses auf 0 gesetzt.
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 [Bild]: Geben Sie Präfix-Länge des Feldes document_binary [4]: 0 Geben Sie die Länge des Feldes document_binary [0]: Enter field terminator [none]:
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin ich die Beantwortung meiner eigenen Frage, da bin ich immer genervt mit SO erzählte mir, um zu setup ein Kopfgeld
Stellt sich heraus, Sie brauchen nicht die-n native-flag. Auch, BCP versucht, um eine 4-byte-Präfix standardmäßig auf die image-Spalte - Sie wollen tatsächlich, dass dieses auf 0 gesetzt.
Wenn Sie mit C# /.NET-code, um dies zu tun, in den folgenden KB-Artikel kann in handliches kommen:
http://support.microsoft.com/kb/317016
Anscheinend kann man etwas tun, wie dies mit BCP und die format-Datei, aber IIRC das format der Datei muss vorab ausgefüllt, mit der genauen Anzahl der bytes, die es erwartet wird, ziehen Sie aus der Spalte, das macht es ziemlich unpraktisch.
Anderen option, die Sie wählen könnte, ist die Verwendung von FILESTREAM in 2008 oder, wenn Sie nicht planen die Migration auf 2008 jederzeit schnell, speichern Sie die Dokumente auf die Datei-system und einen Zeiger auf diese in der Datenbank. Ja, es gibt vor-und Nachteile, aber es ist der Weg, den wir gewählt haben, in allen Projekten zum Datum.
9.0
und die folgenden1
):9.0 1 1 SQLBINARY 0 0 "" 1 col1 ""
refix-length of field document_binary
was sollte0
- aber es erfordert einen Benutzereingriff.) Es kann auch gemacht werden mit FMT-Datei. aber was ist, wenn I dont haben Zugriff auf FMT-Datei ? gibt es eine Möglichkeit, "inline" hat der fmt Inhalt innerhalb der bcp-Befehl ?