2010-03-08 11 views
9

मुझे खेद है कि यह प्रश्न पहले से ही पूछा गया है, लेकिन मुझे इसे कहीं भी नहीं मिला। मेरे पास एक सारणी है जो फाइलों को ब्लॉब्स के रूप में संग्रहीत करती है। फ़ाइल रखने वाला कॉलम एक छवि डेटाटाइप है। मैं कॉलम से बाइनरी डेटा निकालने और इसे वास्तविक फ़ाइल में बदलने में सक्षम होना चाहता हूं। यदि संभव हो तो मैं आदर्श रूप से बीसीपी या प्रबंधन स्टूडियो के साथ ऐसा करने में सक्षम होना चाहूंगा।एसक्यूएल सर्वर से बीएलओबी डेटा प्राप्त करने के लिए मैं बीसीपी या एसक्यूएल सर्वर प्रबंधन स्टूडियो का उपयोग कैसे करूं?

मैं बीसीपी की कोशिश की है, लेकिन किसी कारण से जब मैं कोशिश करते हैं और एक कार्यालय दस्तावेज़ वर्ड सोचता है कि यह भ्रष्ट उसे बाहर निकालें। यहाँ मैं अब तक (स्पष्ट रूप से मूल्यों की रक्षा के लिए निर्दोष :) बदल दिया गया है क्या करने की कोशिश की है या नहीं:

bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -n -S server -U username -P password 

यह हालांकि काम नहीं कर रहा? कोई विचार?

संपादित करें बाहर निकलें आपको मूल ध्वज की आवश्यकता नहीं है। इसके अलावा, बीसीपी छवि स्तंभ पर डिफ़ॉल्ट रूप से एक 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]: 

उत्तर

20

मैं अपने ही सवाल का जवाब कर रहा हूँ के बाद से मैं तो मेरे सेटअप करने के लिए एक इनाम कह

बाहर कर देता है आप -n देशी ध्वज की जरूरत नहीं है के साथ नाराज हो रही है। इसके अलावा, बीसीपी छवि स्तंभ पर डिफ़ॉल्ट रूप से एक 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]: 
0

को यह सेट चाहते हैं कि आप यह करना सी #/नेट कोड का उपयोग कर सकते हैं, तो निम्न प्रारूप फ़ाइल यह उम्मीद कर रही है बाइट्स की सही संख्या के साथ पहले से भरा हो गया है

http://support.microsoft.com/kb/317016

जाहिर है आप बीसीपी और एक प्रारूप फ़ाइल, लेकिन IIRC साथ कुछ इस तरह कर सकते हैं: KB लेख काम में आ सकता है कॉलम से खींचने के लिए, जो इसे काफी अव्यवहारिक बनाता है।

एक अन्य विकल्प आप चुन सकते हैं जब 2008 किसी भी समय के लिए जल्द ही विस्थापित करने के लिए, फाइल सिस्टम पर दस्तावेजों और डेटाबेस में उन्हें एक सूचक की दुकान योजना नहीं बना रहे 2008 में FILESTREAM उपयोग करने के लिए या, है। हां इसमें पेशेवर और विपक्ष हैं, लेकिन जिस तरह से हमने आज तक सभी परियोजनाओं में चुना है।

+0

मैं हारून को यह सेट चाहते हैं, हम वास्तव में 95 के लिए फाइल सिस्टम पर हमारे दस्तावेजों के सभी स्टोर कर हमारे आवेदन का%। वहाँ एक सा है कि अभी भी धब्बे का उपयोग करता है, हालांकि :( – Eric

+0

आप क्षेत्र लंबाई के साथ प्रारूप फ़ाइल प्री-पॉप्युलेट करने की जरूरत नहीं है, (निम्न '9.0' के बाद लाइन टूट जाता है और' 1') मेरे लिए निम्नलिखित काम करता है: '9.0 1 SQLBINARY 0 0" "1 col1" "' – Geoff

+0

@aaron -। के बाद 3 घंटे की कोशिश कर रहा - जाहिरा तौर पर वहाँ varbinary (अधिकतम) निर्यात के साथ समस्याओं का एक बहुत दायर करने के लिए (मैं अभी-अभी समाप्त सी # के साथ यह कर रहे हैं इसे बीसीपी के साथ करें)। (समस्या फ़ील्ड document_binary' की 'रीफिक्स-लम्बाई' के साथ है जिसे '0' पर सेट किया जाना चाहिए - लेकिन इसे उपयोगकर्ता इंटरैक्शन की आवश्यकता है।) यह एफएमटी फ़ाइल के साथ भी किया जा सकता है। लेकिन अगर मेरे पास नहीं है एफएमटी फ़ाइल तक पहुंच? क्या बीसीपी कमांड के भीतर एफएमटी सामग्री "इनलाइन उपयोग" करने का कोई तरीका है? –

संबंधित मुद्दे