मैं Oracle डेटाबेस तालिकाओं को एक सीएसवी फाइलों में कैसे उतार सकता हूं?


18

मुझे Oracle 11g रिलीज़ 1 डेटाबेस से कुछ डेटा पुनर्प्राप्त करने और इसे एक या अधिक CSV फ़ाइलों के रूप में प्रदान करने की आवश्यकता है। डेटा कई तालिकाओं और / या दृश्यों में रहता है। यह सब कमांड लाइन के माध्यम से काम करना चाहिए। इसके लिए सबसे अच्छा तरीका क्या होगा?

जवाबों:


11

अरुण,

अब यह sqlcl Oracle SQL Developer 4.1 EA2 (4.1.0.18.37) से उपलब्ध है, आप इसे पुराने और प्रसिद्ध sqlplus की तरह उपयोग कर सकते हैं। sqlcl में csv के लिए आउटपुट फॉर्मेट सेटिंग है

set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off

sqlcl checkout Kris 'ब्लॉग के बारे में अधिक जानकारी के लिए

इससे पहले कि sqlcl लगभग सबसे आसान था, APEX का उपयोग करना और रिपोर्ट को CSv को निर्यात करना था। सादे पुराने sqlplus में आप इसका उपयोग करके कर सकते हैं

set lines 9999 -- the appropriate size
set head off  -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off

यह सबसे अच्छा काम करता है यदि परिणाम किसी एप्लिकेशन सर्वर या क्लाइंट पर लिखे जाएं। यदि उन्हें डेटाबेस सर्वर पर लिखा जाना है, तो utl_file एक बेहतर विकल्प हो सकता है।

रोनाल्ड।


8

आपको बिल्ट इन UTL_FILE पैकेज को देखना चाहिए । कई तरीके हैं जिनसे आप इसका इस्तेमाल कर सकते हैं।

  1. आप किसी भी संख्या में फ़ाइलों के लिए लिखने के लिए UTL_FILE पैकेज का उपयोग करने वाले पैकेज में किसी भी प्रक्रिया को लिख सकते हैं। इन प्रक्रियाओं को SQL * प्लस सहित लगभग किसी भी एप्लिकेशन से कॉल किया जा सकता है।

  2. आप समान कार्य करने के लिए PL / SQL स्क्रिप्ट लिख सकते हैं और कमांड लाइन पर @scriptname निर्दिष्ट करके SQL * Plus कमांड लाइन से स्क्रिप्ट को कॉल कर सकते हैं।

  3. आप UTL_FILE का उपयोग SQL * Plus में सीधे ब्लॉक कर सकते हैं, लेकिन इसका उपयोग केवल एक समय के निर्यात के लिए किया जाना चाहिए और फिर भी यह सबसे अच्छा मार्ग नहीं हो सकता है।

उनके सरलतम तरीके से UTL_FILE का उपयोग करके एक फ़ाइल निर्यात FOPEN , PUT_LINE को एक या अधिक कॉल और FCLOSE के लिए कॉल से बना होगा


4

यदि प्रदर्शन एक चिंता का विषय है, तो आप विक्रेताओं के टूल पर विचार कर सकते हैं।

मैंने BMC, Wisdomforce, CoSort, DBCrane के औजारों का मूल्यांकन किया है। वे स्पूल, utl_file या बाहरी तालिका की तुलना में काफी तेज हैं। हम DBCrane का उपयोग कर रहे हैं क्योंकि मेरे बॉस लाइसेंस पर बहुत अधिक खर्च नहीं करना चाहते थे।


3

CSV प्रारूप में डिस्क पर डेटा निकालने के लिए आप पायथन और cx_Oracle मॉड्यूल का उपयोग कर सकते हैं।

यहाँ बताया गया है कि आप Oracle से cx_Oracle का उपयोग कैसे करते हैं:

constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()

डेटा लाने के बाद आप पायथन सूची के माध्यम से लूप कर सकते हैं और सीएसवी प्रारूप में डेटा बचा सकते हैं।

for i, chunk in enumerate(chunks(cur)):
    f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
    f_out.write('\n')

जब मैंने TableHunter-For-Oracle लिखा तो मैंने इस दृष्टिकोण का उपयोग किया

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