यदि आप Oracle डेटाबेस के विरुद्ध क्वेरी चलाने के लिए SQLcl का उपयोग कर रहे हैं, तो आप SPOOL
का उपयोग कर सकते हैं अपने क्वेरी परिणामों को CSV फ़ाइल में निर्यात करने का आदेश दें।
उदाहरण
यहां एक उदाहरण दिया गया है जो पूरी तालिका को निर्यात करता है:
SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
लाइन दर लाइन इसने क्या किया:
- मेरी पहली पंक्ति
SQLFORMAT
सेट करती है करने के लिएcsv
. यह सुनिश्चित करता है कि आउटपुट वास्तव में अल्पविराम से अलग है। अगर मैंने ऐसा नहीं किया, तो मुझे.csv
. वाली फ़ाइल मिल सकती है एक्सटेंशन, लेकिन ऐसी सामग्री के साथ जो अल्पविराम से अलग नहीं है। - दूसरी पंक्ति वह है जहां हम
SPOOL
. का उपयोग करते हैं यह निर्दिष्ट करने के लिए आदेश दें कि आउटपुट फ़ाइल कहाँ लिखी जाएगी।/Users/barney/data/countries.csv
. को बदलना सुनिश्चित करें आपके सिस्टम पर किसी स्थान का हिस्सा। - तीसरी पंक्ति में, मैंने SQL क्वेरी चलाई - जिसके परिणाम मैं निर्यात कर रहा हूं। इस मामले में, मैंने पूरे
countries
. का निर्यात किया टेबल. - अगला मैं
SPOOL
बदल गया बंद। - आखिरकार, मैंने
SQLFORMAT
. सेट करके समाप्त कियाansiconsole
पर वापस जाएं (जो कि मैं इसेcsv
. पर सेट करने से पहले उपयोग कर रहा था )।
यहाँ परिणामी फ़ाइल कैसी दिखती है:
"COUNTRY_ID","COUNTRY_NAME","REGION_ID" "AR","Argentina",2 "AU","Australia",3 "BE","Belgium",1 "BR","Brazil",2 "CA","Canada",2 "CH","Switzerland",1 "CN","China",3 "DE","Germany",1 "DK","Denmark",1 "EG","Egypt",4 "FR","France",1 "HK","HongKong",3 "IL","Israel",4 "IN","India",3 "IT","Italy",1 "JP","Japan",3 "KW","Kuwait",4 "MX","Mexico",2 "NG","Nigeria",4 "NL","Netherlands",1 "SG","Singapore",3 "UK","United Kingdom",1 "US","United States of America",2 "ZM","Zambia",4 "ZW","Zimbabwe",4 25 rows selected.
कॉलम हेडर हटाएं
आप SET HEADING off
. के साथ कॉलम हेडर्स को हटा सकते हैं :
SET SQLFORMAT csv
SET HEADING off
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on
परिणाम:
"AR","Argentina",2 "AU","Australia",3 "BE","Belgium",1 "BR","Brazil",2 "CA","Canada",2 "CH","Switzerland",1 "CN","China",3 "DE","Germany",1 "DK","Denmark",1 "EG","Egypt",4 "FR","France",1 "HK","HongKong",3 "IL","Israel",4 "IN","India",3 "IT","Italy",1 "JP","Japan",3 "KW","Kuwait",4 "MX","Mexico",2 "NG","Nigeria",4 "NL","Netherlands",1 "SG","Singapore",3 "UK","United Kingdom",1 "US","United States of America",2 "ZM","Zambia",4 "ZW","Zimbabwe",4 25 rows selected.
इस मामले में, मैंने HEADINGS
को बदल दिया फ़ाइल निर्यात करने के बाद वापस चालू करें।
फ़ीडबैक निकालें
आप X rows selected
SET FEEDBACK off
:
SET SQLFORMAT csv
SET HEADING off
SET FEEDBACK off
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on
SET FEEDBACK on
परिणाम:
"AR","Argentina",2 "AU","Australia",3 "BE","Belgium",1 "BR","Brazil",2 "CA","Canada",2 "CH","Switzerland",1 "CN","China",3 "DE","Germany",1 "DK","Denmark",1 "EG","Egypt",4 "FR","France",1 "HK","HongKong",3 "IL","Israel",4 "IN","India",3 "IT","Italy",1 "JP","Japan",3 "KW","Kuwait",4 "MX","Mexico",2 "NG","Nigeria",4 "NL","Netherlands",1 "SG","Singapore",3 "UK","United Kingdom",1 "US","United States of America",2 "ZM","Zambia",4 "ZW","Zimbabwe",4
यहाँ, मैंने FEEDBACK
बदल दिया है फ़ाइल निर्यात करने के बाद वापस चालू करें।
एकाधिक टेबल
इस उदाहरण में, मैं दो तालिकाओं में शामिल होने वाली थोड़ी अधिक जटिल क्वेरी के परिणाम निर्यात करता हूं:
SET SQLFORMAT csv
SET HEADING off
SET FEEDBACK off
SPOOL '/Users/barney/data/employees_jobs.csv';
SELECT
e.employee_id,
e.first_name,
e.last_name,
e.salary,
j.job_title
FROM employees e
INNER JOIN jobs j
ON e.job_id = j.job_id
WHERE e.salary BETWEEN 12000 AND 15000
ORDER BY SALARY DESC;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on
SET FEEDBACK on
परिणामी फ़ाइल:
145,"John","Russell",14000,"Sales Manager" 146,"Karen","Partners",13500,"Sales Manager" 201,"Michael","Hartstein",13000,"Marketing Manager" 147,"Alberto","Errazuriz",12000,"Sales Manager" 205,"Shelley","Higgins",12000,"Accounting Manager" 108,"Nancy","Greenberg",12000,"Finance Manager"
परिणाम जोड़ें
डिफ़ॉल्ट रूप से, SPOOL
REPLACE
. का उपयोग करता है , जो फ़ाइल को बदल देता है यदि वह पहले से मौजूद है।
हालांकि, हम APPEND
. का उपयोग कर सकते हैं फ़ाइल में परिणाम जोड़ने का तर्क।
SET SQLFORMAT csv
SET HEADING off
SET FEEDBACK off
SPOOL '/Users/barney/data/employees_jobs.csv' APPEND;
SELECT
e.employee_id,
e.first_name,
e.last_name,
e.salary,
j.job_title
FROM employees e
INNER JOIN jobs j
ON e.job_id = j.job_id
WHERE e.salary BETWEEN 11000 AND 11999
ORDER BY SALARY DESC;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on
SET FEEDBACK on
परिणामी फ़ाइल:
145,"John","Russell",14000,"Sales Manager" 146,"Karen","Partners",13500,"Sales Manager" 201,"Michael","Hartstein",13000,"Marketing Manager" 147,"Alberto","Errazuriz",12000,"Sales Manager" 205,"Shelley","Higgins",12000,"Accounting Manager" 108,"Nancy","Greenberg",12000,"Finance Manager" 168,"Lisa","Ozer",11500,"Sales Representative" 174,"Ellen","Abel",11000,"Sales Representative" 114,"Den","Raphaely",11000,"Purchasing Manager" 148,"Gerald","Cambrault",11000,"Sales Manager"
इस उदाहरण ने परिणामों को उस फ़ाइल में जोड़ दिया जो पिछले उदाहरण में बनाई गई थी (और आबाद थी)।