2011-08-02 19 views
5

मेरे पास एक डेटाबेस स्ट्रिंग है जो डेटाबेस में BLOB डेटा प्रकार के रूप में संग्रहीत है। मैं इसे SQL चयन क्वेरी द्वारा निकालना चाहता हूं, लेकिन मुझे BLOB से text पढ़ने योग्य/कनवर्ट करने में समस्याएं हैं।बीएलओबी टू स्ट्रिंग, एसक्यूएल सर्वर

मैंने उदाहरण की कोशिश की है

select convert(nvarchar(40),convert(varbinary(40),BLOBTextToExtract)) 
from [NavisionSQL$Customer] 

मुझे लगता है मैं कुछ इसी तरह की जरूरत है लगता है, लेकिन मैं समझ नहीं मैं रूपांतरण करने की ज़रूरत है कि वास्तव में क्या। क्या कोई मुझे कुछ दिशा दे सकता है?

सादर

उत्तर

7

समस्या स्पष्ट रूप से SQL सर्वर नहीं थी, लेकिन एनएवी सिस्टम जो फ़ील्ड को अद्यतन करता है। एक संपीड़न संपत्ति है जिसका उपयोग एनएवी में बीएलओबी फ़ील्ड पर किया जा सकता है, जो SQL सर्वर का हिस्सा नहीं है। तो कस्टम संपीड़न ने डेटा को अपठनीय बना दिया, हालांकि रूपांतरण काम किया।

समाधान ऑब्जेक्ट डिजाइनर, टेबल डिज़ाइनर, फ़ील्ड के लिए गुण (फ़ील्ड पंक्ति पर Shift + F4) के माध्यम से संपीड़न को बंद करना था।

उसके बाद डेटा की निकासी, उदा, साथ बनाया जा सकता है .: टेबल से चयन परिवर्तित (varchar (max), डाली (BLOBFIELD बाइनरी के रूप में))

सभी जवाब है कि कई मायनों में सही थे के लिए धन्यवाद!

+0

मैंने आपके समाधान की कोशिश की, लेकिन मुझे निम्न त्रुटि मिल रही है: 'डेटा प्रकार टेक्स्ट से varbinary में स्पष्ट रूपांतरण की अनुमति नहीं है।' कोई विचार ..?? – mithilatw

4

यह कैसे डेटा शुरू स्तंभ में डाल दिया गया था पर निर्भर करता है। के रूप में एक काम करना चाहिए इनमें से किसी का प्रयास करें:

SELECT CONVERT(NVarChar(40), BLOBTextToExtract) 
FROM [NavisionSQL$Customer]; 

या अगर यह सिर्फ varchar ... था

SELECT CONVERT(VarChar(40), BLOBTextToExtract) 
FROM [NavisionSQL$Customer]; 

बात की पुष्टि कैसे इस स्क्रिप्ट का इस्तेमाल किया और एसक्यूएल सर्वर 2K8 आर 2 पर परीक्षण:

DECLARE @blob VarBinary(MAX) = CONVERT(VarBinary(MAX), 'test'); 

-- show the binary representation 
SELECT @blob; 

-- this doesn't work 
SELECT CONVERT(NVarChar(100), @blob); 

-- but this does 
SELECT CONVERT(VarChar(100), @blob); 
+0

, मैं सिर्फ चीनी संकेत मिलता है। सब कुछ के लिए दूसरा रिटर्न डी | जेड। – user822448

+0

मुझे पूरा यकीन है कि टेक्स्ट को ब्लॉब (छवि) – user822448

+0

के रूप में संग्रहीत किया गया है SQL सर्वर का कौन सा संस्करण आप उपयोग कर रहे हैं? – Yuck

0

आप इस प्रयास कर सकते हैं:

select convert(nvarchar(max),convert(varbinary(max),blob_column)) from table_name 
+0

यह सिर्फ चीनी संकेत देता है। शुरुआत से डेटाटाइप छवि है (जो मुझे लगता है कि एक बीएलओबी है) – user822448

0

इस मिले ...

BCP "TableName से चयन शीर्ष 1 BlobText" queryout "C: \ DesinationFolder \ filename.txt" -टी -c '

आप विभिन्न विकल्पों के बारे में पता करने की जरूरत है BCP झंडे के ...

http://msdn.microsoft.com/en-us/library/ms162802.aspx

0
CREATE OR REPLACE FUNCTION HASTANE.getXXXXX(p_rowid in rowid) return VARCHAR2 
    as 
      l_data long; 
    begin 
     select XXXXXX into l_data from XXXXX where rowid = p_rowid; 
     return substr(l_data, 1, 4000); 
    end getlabrapor1; 
पहले साथ
संबंधित मुद्दे