2008-09-27 16 views
5

चयन मैं Oracle SQL का उपयोग कर रहा (SQLDeveloper में, तो मैं sqlplus के लिए पहुँच नहीं है इस तरह के स्तंभ के रूप में आदेश) एक प्रश्न है कि कुछ इस तरह दिखता निष्पादित करने के लिए:कैसे फ़ॉर्मेट करने के लिए Oracle SQL केवल-पाठ उत्पादन

select assigner_staff_id as staff_id, active_flag, assign_date, 
    complete_date, mod_date 
from work where assigner_staff_id = '2096'; 

परिणाम यह मुझे कुछ इस तरह दिखाई दे:

 
STAFF_ID    ACTIVE_FLAG ASSIGN_DATE    COMPLETE_DATE    MOD_DATE     
---------------------- ----------- ------------------------- ------------------------- ------------------------- 
2096     F   25-SEP-08     27-SEP-08     27-SEP-08 02.27.30.642959000 PM 
2096     F   25-SEP-08     25-SEP-08     25-SEP-08 01.41.02.00 AM 

2 rows selected 

यह बहुत आसानी से एक बहुत व्यापक और बोझल शाब्दिक रिपोर्ट जब मैं के रूप में परिणाम को चिपकाने के लिए कोशिश कर रहा हूँ उत्पादन कर सकते हैं एक ठीक से स्वरूपित त्वरित-एन-गंदा एक ई-मेल या समस्या रिपोर्ट इत्यादि में टेक्स्ट ब्लॉक, सभी थै पूर्व से छुटकारा पाने का सबसे अच्छा तरीका क्या है जब मैं केवल सादा-वेनिला ओरेकल एसक्यूएल का उपयोग कर रहा हूं तो आउटपुट कॉलम में ट्रैक्टर व्हाइट स्पेस? अब तक मेरी सभी वेब खोजों में बहुत कुछ नहीं आया है, क्योंकि सभी वेब खोज परिणाम मुझे दिखा रहे हैं कि SQLPLUS में COLUMN जैसे स्वरूपण आदेशों का उपयोग करके इसे कैसे किया जाए (जो मेरे पास नहीं है)।

उत्तर

2

परिणाम प्राप्त करने के लिए आप क्या उपयोग कर रहे हैं? आपके द्वारा चिपकाया गया आउटपुट ऐसा लगता है कि यह एसक्यूएल * प्लस से आ रहा है। ऐसा हो सकता है कि परिणाम उत्पन्न करने के लिए आप जो भी टूल उपयोग कर रहे हैं, उसमें आउटपुट को संशोधित करने की कुछ विधि है।

डिफ़ॉल्ट रूप से ओरेकल शीर्षक की चौड़ाई या स्तंभ डेटा की चौड़ाई के आधार पर कॉलम आउटपुट करता है जो कभी भी व्यापक होता है।

यदि आप कॉलम छोटे बनाना चाहते हैं तो आपको या तो उन्हें नाम बदलना होगा या उन्हें टेक्स्ट में परिवर्तित करना होगा और डिफ़ॉल्ट को छोटा करने के लिए substr() का उपयोग करना होगा।

select substr(assigner_staff_id, 8) as staff_id, 
     active_flag as Flag, 
     to_char(assign_date, 'DD/MM/YY'), 
     to_char(complete_date, 'DD/MM/YY'), 
     mod_date 
from work where assigner_staff_id = '2096'; 
+0

जैसा कि बताया गया है, मैं ओरेकल एसक्यूएल डेवलपर का उपयोग कर रहा हूं (मुफ्त उपकरण - मैं सस्ता हूं!)। यह कवर के तहत एसक्यूएल * प्लस का उपयोग कर सकता है, लेकिन यह मुझे COLUMN कमांड या अन्य SQL * प्लस कमांड का उपयोग करने नहीं देता है। सबस्ट्र (कॉल, चौड़ाई) का उपयोग करना जो मैं बाद में था - इससे मदद मिलती है! महान! –

0

अच्छा सवाल। मुझे वास्तव में इसके बारे में सोचना पड़ा।

एक चीज जो आप कर सकते हैं वह आपके एसक्यूएल को बदलना है ताकि यह केवल सबसे कम उपयोग करने योग्य कॉलम लौटा सके।

उदा। (मैं ऑरैक सिंटैक्स पर बहुत गर्म नहीं हूं, लेकिन कुछ समान काम करना चाहिए):

select substring(convert(varchar(4), assigner_staff_id), 1, 4) as id, 
     active_flag as act, -- use shorter column name 

     -- etc. 

from work where assigner_staff_id = '2096'; 

क्या यह समझ में आता है?
यदि आप इसे यूनिक्स/लिनक्स पर कर रहे थे, तो मैं इसे कमांड लाइन से चलाने और इसे एक अजीब स्क्रिप्ट के माध्यम से पाइप करने का सुझाव दूंगा।

अगर मैं मिस-समझ लिया है, तो आपके सवाल का अपडेट कर लें और मैं एक और जाना :)

+0

मैंने SQLDeveloper में आपके उत्तर का एक टुकड़ा चिपकाने का प्रयास किया, लेकिन ओरेकल कनवर्ट पर चकित हुआ। मुझे लगता है कि ओरेकल का कन्वर्ट अलग-अलग काम करता है। हालांकि, substring (substr) का उपयोग सहायक है। –

1

क्या आप एसक्यूएल के साथ कर सकते आपके उपकरण द्वारा सीमित है होगा। एसक्यूएल प्लस में कॉलम प्रारूपित करने के लिए कमांड हैं लेकिन वे उपयोग करने में आसान नहीं हैं।

एक त्वरित दृष्टिकोण आउटपुट को एक्सेल में पेस्ट करना और इसे प्रारूपित करना या केवल स्प्रेडशीट संलग्न करना है। कुछ टूल आउटपुट को स्प्रेडशीट के रूप में सीधे सहेज लेंगे।

+1

ठीक है, यह एक सभ्य विकल्प है। मैंने अभी जांच की है, और एसक्यूएल डेवलपर के पास सीवीएस या एक्सएलएस फ़ाइल के रूप में परिणाम निर्यात करने का विकल्प है। –

0

यदि आपके पास पंक्तियों की बहुत सारी संख्या नहीं है तो मैं अक्सर Tom Kytes print_table फ़ंक्शन का उपयोग करूंगा।

SQL> set serveroutput on 
SQL> execute print_table('select * from all_objects where rownum < 3'); 
OWNER       : SYS 
OBJECT_NAME     : /1005bd30_LnkdConstant 
SUBOBJECT_NAME    : 
OBJECT_ID      : 27574 
DATA_OBJECT_ID    : 
OBJECT_TYPE     : JAVA CLASS 
CREATED      : 22-may-2008 11:41:13 
LAST_DDL_TIME     : 22-may-2008 11:41:13 
TIMESTAMP      : 2008-05-22:11:41:13 
STATUS      : VALID 
TEMPORARY      : N 
GENERATED      : N 
SECONDARY      : N 
----------------- 
OWNER       : SYS 
OBJECT_NAME     : /10076b23_OraCustomDatumClosur 
SUBOBJECT_NAME    : 
OBJECT_ID      : 22390 
DATA_OBJECT_ID    : 
OBJECT_TYPE     : JAVA CLASS 
CREATED      : 22-may-2008 11:38:34 
LAST_DDL_TIME     : 22-may-2008 11:38:34 
TIMESTAMP      : 2008-05-22:11:38:34 
STATUS      : VALID 
TEMPORARY      : N 
GENERATED      : N 
SECONDARY      : N 
----------------- 

PL/SQL procedure successfully completed. 

SQL> 

पंक्तियों के अपने बहुत से, मैं सिर्फ SQL डेवलपर में क्वेरी करते हैं और xls के रूप में बचा सकते हैं, तो businessy प्रकार किसी कारण से उत्कृष्टता प्राप्त प्यार करता हूँ।

2

अपने बयान में आप उत्पादन के प्रकार निर्दिष्ट कर सकते हैं आप देख रहे हैं:

select /*csv*/ col1, col2 from table; 
select /*Delimited*/ col1, col2 from table; 

ऐसी XML, HTML, पाठ, लोडर, आदि जैसे अन्य प्रारूप उपलब्ध हैं

आप इन विशेष विकल्पों में से स्वरूपण बदल सकते हैं उपकरण> Preferences> डाटाबेस> उपयोगिताएँ> निर्यात

भागो स्क्रिप्ट के बजाय रन वक्तव्य चयन करना न भूलें।

* इस Oracle SQL डेवलपर v3.2

0

के लिए है क्यों नहीं बस "डाली" समारोह का उपयोग करें?

select 
(cast(assigner_staff_id as VARCHAR2(4)) AS STAFF_ID, 
(cast(active_flag as VARCHAR2(1))) AS A, 
(cast(assign_date as VARCHAR2(10))) AS ASSIGN_DATE, 
(cast(COMPLETE_date as VARCHAR2(10))) AS COMPLETE_DATE, 
(cast(mod_date as VARCHAR2(10))) AS MOD_DATE 
from work where assigner_staff_id = '2096'; 
संबंधित मुद्दे