2015-11-23 4 views
5

के साथ पूरे VARCHAR (MAX) कॉलम को कैसे प्राप्त करें मेरे पास एक पाइथन प्रोग्राम है जो एक ओडीबीसी कनेक्शन का उपयोग कर किसी MSSQL डेटाबेस से कनेक्ट होता है। मैं पाइथन पुस्तकालय का उपयोग कर रहा हूँ pypyodbc है।पाइथन pypyodbc

यहाँ मेरी सेटअप है:

  • Windows 8.1 x64
  • SQL सर्वर 2014 x64
  • अजगर 2.7.9150
  • PyPyODBC 1.3.3
  • ODBC ड्राइवर: एसक्यूएल सर्वर मूल क्लाइंट 11.0

मेरी समस्या यह है कि जब मैं एक टेबल डब्ल्यू पूछता हूं एक वर्चर (अधिकतम) कॉलम के साथ, सामग्री काटा जा रहा है।

मैं pypyodbc के लिए नया हूं और मैं पागल की तरह चारों ओर खोज रहा हूं और इसे pypyodbc या यहां तक ​​कि pyodbc में होने से रोकने के तरीके पर कुछ भी नहीं मिल रहा है। कम से कम उन खोज शब्दों के साथ नहीं जो मैं उपयोग कर रहा हूं और मुझे नहीं पता कि अन्य वाक्यांशों को आजमाएं।

मैंने अपने SQL क्वेरी में SET TEXTSIZE 2147483647; जोड़ने का भी प्रयास किया, लेकिन डेटा अभी भी छोटा हो रहा है।

मैं इसे कैसे होने से रोक सकता हूं? या आप मुझे सही दिशा में इंगित कर सकते हैं, कृपया?

अद्यतन:

तो, मैं अपने SQL क्वेरी में एक डाली प्रदर्शन की कोशिश की। जब मैं CAST(my_column as VARCHAR(MAX)) करता हूं तो यह उसी स्थिति में छंटनी करता है। हालांकि, अगर मैं CAST(my_column as VARCHAR(8000)) करता हूं तो यह मुझे टेक्स्ट का एक बड़ा सेट देता है, लेकिन यह अभी भी कुछ सामग्री को छोटा कर रहा है। अगर मैं 8000 से बड़ा कुछ करने की कोशिश करता हूं तो मुझे यह कहते हुए एक त्रुटि मिलती है कि 8000 सबसे बड़ा मैं उपयोग कर सकता हूं। किसी को पता है कि यहां क्या हो रहा है? यह अजीब लगता है कि MAX का उपयोग नहीं करेगा।

+0

मैं आपकी समस्या pypyodbc का उपयोग कर पुन: करने में सक्षम था: मेरी VARCHAR से पाठ की मेरी 9386 वर्ण (मैक्स) स्तंभ 2047 वर्णों तक छोटा कर दिया गया

यहाँ की कड़ी है। जब मैंने pypyodbc के बजाय pyodbc का उपयोग किया तो सटीक उसी पायथन कोड ने पूर्ण स्ट्रिंग को वापस कर दिया। –

+0

@GordThompson आपकी टिप्पणी के लिए धन्यवाद। मैंने हाल ही में pypyodbc के बजाय pyodbc का उपयोग करने का प्रयास किया और किसी कारण से मैं इसे अपने डेटा सेट को पूरी तरह से वापस नहीं कर सका। यह संभव है कि समस्या कुछ असंबंधित हो सकती है, लेकिन मुझे पाइडबैक की कोशिश करने के कुछ ही समय बाद समाधान समाधान (मैंने इसे उत्तर के रूप में पोस्ट किया) पाया और मैंने पाइडबैक विचार को खत्म कर दिया। अगर मुझे कुछ समय मिलता है, तो मैं परीक्षण के रूप में पाइपबैक को पूरी तरह कार्यान्वित करने की कोशिश करूंगा। इस तरह मैं उन लोगों के लिए अपने निष्कर्ष पोस्ट कर सकता हूं जो इस समस्या का सामना कर सकते हैं; अगर मेरा अन्य समाधान उनके लिए काम नहीं करता है। एक बार फिर धन्यवाद! –

उत्तर

6

ठीक है, मैं समस्या हल हो गई। मुझे यह लिंक एक समान समस्या के बारे में मिला, सिर्फ पायथन में नहीं, और उन्होंने पाया कि समस्या SQL सर्वर मूल क्लाइंट ड्राइवर के साथ थी। उन्होंने इसके बजाय SQL सर्वर मानक ड्राइवर का उपयोग करने की अनुशंसा की।

इसलिए मैंने अपने ड्राइवर को मेरी ओडीबीसी कनेक्शन स्ट्रिंग में SQL Server Native Client 11.0 से SQL Server से बदल दिया और यह पूरी तरह से काम कर रहा है! मुझे अपनी एमएसएसक्यूएल डेटा तालिका में VARCHAR (MAX) कॉलम की पूरी सामग्री मिल रही है।

मुझे उम्मीद है कि यह किसी और के लिए उपयोगी साबित होगा जो इस मुद्दे से मुकाबला करता है! सौभाग्य! http://www.sqlservercentral.com/Forums/Topic1534163-391-1.aspx

1

मुझे लगता है कि आप फ्रीटीडीएस का उपयोग कर रहे हैं, क्योंकि मैंने पहले इस समस्या को देखा है। अपने freetds.conf फ़ाइल में, के तहत होने की संभावना [वैश्विक]:

[global] 
text size = 64512 

SQL सर्वर के अपने संस्करण के आधार पर करने के लिए यह परिवर्तन: तुम भी के किसी भी इसे बदलने के लिए की आवश्यकता होगी

[global] 
text size = 4294967295 

अपने DSNs।

यदि यह समस्या नहीं है, तो हमें अधिक जानकारी की आवश्यकता होगी: क्या आप लिनक्स या विंडोज से कनेक्ट हो रहे हैं? एसक्यूएल सर्वर का कौन सा संस्करण? कनेक्ट करने के लिए आप किस ड्राइवर का उपयोग कर रहे हैं?

+0

मुझे विश्वास नहीं है कि यह मुद्दा है, क्या यह केवल तभी लागू नहीं है जब मैं लिनक्स पर हूं? मैं एक विंडोज मशीन से कनेक्ट कर रहा हूँ। यह SQL सर्वर 2014 है। यह वह ड्राइवर है जिसका मैं अपने ओडीबीसी कनेक्शन के लिए उपयोग कर रहा हूं: 'SQL सर्वर मूल क्लाइंट 11.0'। –

+0

क्या मेरे लिए pypyodbc कनेक्टर के लिए टेक्स्ट आकार विशेषता बदलने के लिए एक समान तरीका है? –

+0

आह, यह उस मामले में लागू नहीं होता है। आपने यह नहीं बताया था कि आप विंडोज़ पर थे, यही कारण है कि मैंने "मुझे लगता है कि आप फ्रीटीडीएस का उपयोग कर रहे हैं", क्योंकि मैंने इस मुद्दे को पहले फसल देखा था। क्या आप अपना प्रश्न शामिल करने के लिए संशोधित कर सकते हैं: कि आप विंडोज (और संस्करण, और 32 बनाम 64), आपके SQL सर्वर संस्करण (और 32 बनाम 64), पायथन संस्करण (और 32 बनाम 64), pypyodbc संस्करण, और ड्राइवर पर हैं ? वह जानकारी निश्चित रूप से मदद करेगी। – FlipperPA