Sqlplus आउटपुट को एक पंक्ति में कैसे प्रदर्शित किया जाए?


47

मेरे पास एक टेबल है जिसमें 100 कॉलम हैं। SQL Plusआउटपुट रैप में डेटा का चयन करते समय , इसे पढ़ना मुश्किल हो जाता है।

मैं जो चाहता हूं, वह या तो एक क्षैतिज स्क्रॉल बार है या दिखाई देने के लिए आउटपुट भेजें less

मैं SQLPlus में निम्नलिखित बयान चलाता हूं -

SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;

फिर bashमैं चला -

कम आउटपुट

आउटपुट अभी भी लिपटे और अपठनीय दिखाई देता है।


1
मुझे कॉलम की तरह ऑटो-एक्सपेंशन भी करना होगा, बजाय इसके कि मैं हर एक के लिए कॉलम साइज सेट करूं।
क्षितिज शर्मा 3

जवाबों:


58

यह sqlplus को लाइनों को लपेटने के लिए मजबूर करने के लिए पर्याप्त नहीं है। दर्शक को यह बताने के लिए भी आवश्यक है कि आप स्पूल फ़ाइल को लाइनों को न लपेटने के लिए देखें। यदि आपका दर्शक है, lessतो -Sआपको https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less के अनुसार उपयोग करने का विकल्प है । यूनिक्स / लिनक्स पर आप head -1 output.txtकिसी फ़ाइल की पहली लाइन प्राप्त करने के लिए उपयोग कर सकते हैं और इसलिए यह जांचें कि क्या यह अपेक्षित है या आप यह od -c output.txt|head देखने के लिए उपयोग कर सकते हैं कि लाइन ब्रेक वास्तव में आपकी आउटपुट फ़ाइल में कहाँ रखे गए हैं।

यदि आप LONG कॉलम प्रदर्शित करते हैं और उनके मानों में पंक्ति विराम होता है, तो इन स्तंभ मानों के लिए कई लाइनें मुद्रित की जाएंगी और आप sqlplus सेटिंग्स के साथ इसे अधिलेखित नहीं कर सकते।


निम्नलिखित sqlplus आदेश उपयोगी हो सकता है:

  • SET LINESIZE linesizeलाइन की लंबाई। ज्यादातर मामलों में अधिकतम मूल्य linesize32767 है। यदि आप LINESIZE को अमान्य मान पर सेट करते हैं और त्रुटि संदेश की जांच कर सकते हैं तो आप अपना अधिकतम मूल्य ज्ञात कर SET LINESIZE 0सकते हैं SP2-0267: linesize option 0 out of range (1 through 32767) (1)
  • SET TRIMSPOOL ON अन्यथा स्पूलफ़ाइल में प्रत्येक पंक्ति रिक्त स्थान से भरी होती है जब तक कि रेखा तक पहुंच नहीं होती है।
  • SET TRIMOUT ON अन्यथा आउटपुट में हर पंक्ति रिक्त स्थान से भरी होती है, जब तक कि लाइनों तक पहुंच नहीं होती है।
  • SET WRAP OFFयदि यह लंबा है तो लाइन को छोटा करता है। यह तब नहीं होना चाहिए जब लाइनें पर्याप्त बड़ी हों।
  • SET TERMOUT OFFपरिणाम के मुद्रण को आउटपुट में दबा देता है। लाइनें अभी भी स्पूल फ़ाइल में लिखी जाती हैं। यह एक बयान के अतिशयोक्ति समय में तेजी ला सकता है।
  • SET PAGESIZE 0 एक अनंत पेज सेट करने और शीर्षकों, शीर्षकों आदि से बचने के लिए।
  • SETआउटपुट (NUMWIDTH, NUMFORMAT, LONG, COLSEP) और प्रदर्शन (ARRAYSIZE, LONGCHUNKSIZE) से संबंधित कुछ अन्य पैरामीटर हैं।

आपको COLUMNव्यक्तिगत कॉलम को प्रारूपित करने के लिए कमांड का उपयोग करना होगा ।

उदा आउटपुट में column name format a30स्तंभ nameको अधिकतम 30 वर्णों तक प्रारूपित करेगा ।

यदि आप चाहते हैं कि प्रदर्शन का आकार ठीक न हो, लेकिन यह एक पंक्ति में किसी स्तंभ के वास्तविक मूल्य के आकार के बराबर होना चाहिए, तो मुझे पता है कि आप वांछित परिणाम और उपयोग प्राप्त करने के लिए अपने बयान के चुनिंदा खंड को बदल सकते हैं। स्ट्रिंग संघनन ऑपरेटर ||, उदा

select emp_id||' '||first_name||' '||last_name
from emp;

सभी चर का पूरा विवरण SQL * प्लस उपयोगकर्ता की मार्गदर्शिका और संदर्भ में पाया जा सकता है ।

यदि आप कुछ सेटिंग्स (या COLUMN परिभाषाओं) का पुन: उपयोग करना चाहते हैं, तो आप उन्हें एक फ़ाइल में संग्रहीत कर सकते हैं और इस फ़ाइल को तब चला सकते हैं जब आपको उनकी दोबारा आवश्यकता हो। यदि आप sqlplus शुरू करते हैं तो आप इस फ़ाइल को स्वचालित रूप से चला सकते हैं।

(1) "कैसे पता करें LINESIZE अधिकतम मूल्य (यह सिस्टम निर्भर है) (Doc ID 1547262.1.1)"


LONGCHUNKSIZEकेवल प्रदर्शन के बारे में नहीं है, इसके अलावा अवांछनीय लाइन-रैपिंग से बचने के लिए इसकी आवश्यकता प्रतीत होती है LINESIZE, बस इसे अनुपयोगी आउटपुट से प्रयोग किया जाता हैDBMS_METADATA.get_ddl()
डैनियल वेरिटे

2
अच्छा जवाब ...
ypercubeᵀᴹ

2
क्या @ YperSillyCubeᵀᴹ ने कहा :)
टॉम वी

आपको SET PAGESIZE 1000इसके बजाय का उपयोग करना चाहिए 0अन्यथा कॉलम हेडर `सिलेक्ट 'कमांड जारी करते समय प्रिंट नहीं होंगे। संदर्भ
पियरे सी

@PierreC यही कारण है कि मैंने लिखा "अनंत पेज सेट करने के लिए 0 सेट करें और शीर्षकों, शीर्षकों और इसी तरह से बचें।"
चमत्कार 173

5

आपको नीचे सेट करने की आवश्यकता है:

SET WRAP OFF

3
set linesize 30000 SET WRAP OFFथा मेरे लिए चाल
ren

2

आप इस तरह सेट कर सकते हैं

SET WRAP OFF

SET PAGESIZE 0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.