どのように私は、SQL Serverの外にBLOBデータを取得するために、BCPまたはSQL Server Management Studioを使用していますか?
-
18-09-2019 - |
質問
この質問は、すでに依頼されている場合、私は申し訳ありませんが、私はどこでもそれを見つけることができませんでした。私は、BLOBとしてファイルを格納するテーブルを持っています。ファイルを保持している列には、画像データ型です。私は、カラムからバイナリデータを抽出し、実際のファイルにそれを回すことができるようにしたいと思います。私は、理想的には、可能な場合、BCPや管理のスタジオでこれを行うことができるようにしたいと思います。
私は、BCPを試してみましたが、いくつかの理由で、私は試してみて、オフィス文書を引き出すためのWordは、それが破損しているだと思っているようです。ここでは(明らか値は無実を保護するために変更されています):私がこれまで試したものです。
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -n -S server -U username -P password
このはも動作していませんか?任意の考え?
編集は、-nネイティブフラグを必要としませんが判明。また、BCPは、画像列にデフォルトで4バイトの接頭辞を含めるしよう - あなたが実際に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]:
解決
私は自分の質問に答えるよ。
あなたは-nネイティブフラグを必要としませんが判明。また、BCPは、画像列にデフォルトで4バイトの接頭辞を含めるしよう - あなたが実際に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]:
他のヒント
あなたがこれを行うには、C#/。NETコードを使用することができる場合は、次のKB資料が便利になることがあります:
http://support.microsoft.com/kb/317016する
どうやらあなたはBCPと形式のファイルで、このような何かを行うことができますが、IIRC形式のファイルがなければ、それはかなり非現実的になり、カラムから引っ張って期待している正確なバイト数が事前ました。
あなたが選択する場合があります別のオプションを使用すると、すぐに2008いつに移行するファイルシステム上の文書やデータベース内にそれらへのポインタを格納する予定がない場合は、2008年にFILESTREAMを使用したりすることです。はいそこにこれに長所と短所がありますが、それは我々がこれまでのすべてのプロジェクトで選択した方法です。