Ако използвате SQLcl за изпълнение на заявки към Oracle Database, тогава можете да използвате 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","Аржентина",2"AU","Австралия",3"BE","Белгия",1"BR","Бразилия",2 "CA","Канада",2"CH","Швейцария",1"CN","Китай",3"DE","Германия",1"DK","Дания",1"EG"," Египет",4"FR","Франция",1"HK","Хонконг",3"IL","Израел",4"IN","Индия",3"ИТ","Италия",1" JP","Япония",3"KW","Кувейт",4"MX","Мексико",2"NG","Нигерия",4"NL","Холандия",1"SG","Сингапур ",3"Великобритания","Обединено кралство",1"САЩ","Съединени американски щати",2"ZM","Замбия",4"ZW","Зимбабве",425 избрани реда.
Премахване на заглавки на колони
Можете да премахнете заглавките на колоните с 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 ","Швейцария",1"CN","Китай",3"DE","Германия",1"DK","Дания",1"EG","Египет",4"FR","Франция" ,1"HK","HongKong",3"IL","Израел",4"IN","India",3"IT","Italy",1"JP","Japan",3"KW" ,"Кувейт",4"MX","Мексико",2"NG","Нигерия",4"NL","Холандия",1"SG","Сингапур",3"UK","Обединеното кралство" ,1"САЩ","Съединени американски щати",2"ZM","Замбия",4"ZW","Зимбабве", 425 реда избрани.
В този случай обърнах 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 ","Швейцария",1"CN","Китай",3"DE","Германия",1"DK","Дания",1"EG","Египет",4"FR","Франция" ,1"HK","HongKong",3"IL","Израел",4"IN","India",3"IT","Italy",1"JP","Japan",3"KW" ,"Кувейт",4"MX","Мексико",2"NG","Нигерия",4"NL","Холандия",1"SG","Сингапур",3"UK","Обединеното кралство" ,1"САЩ","Съединени американски щати",2"ZM","Замбия",4"ZW","Зимбабве",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,"Джон","Ръсел",14000,"Мениджър продажби"146,"Карън","Партньори",13500,"Мениджър продажби"201,"Майкъл","Хартщайн",13000,"Маркетинг мениджър "147,"Alberto","Errazuriz",12000,"Мениджър продажби"205,"Shelley","Higgins",12000,"Счетоводен мениджър"108,"Nancy","Greenberg",12000,"Финансов мениджър"предварително>Добавяне на резултатите
По подразбиране
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,"Джон","Ръсел",14000,"Мениджър продажби"146,"Карън","Партньори",13500,"Мениджър продажби"201,"Майкъл","Хартщайн",13000,"Маркетинг мениджър "147,"Алберто","Еразуриз",12000,"Мениджър продажби"205,"Шели","Хигинс",12000,"Счетоводен мениджър"108,"Нанси","Гринберг",12000,"Финансов мениджър"168 ,"Lisa","Ozer",11500,"Търговски представител"174,"Ellen","Abel",11000,"Търговски представител"114,"Den","Raphaely",11000,"Мениджър покупки"148," Джералд","Cambrault",11000,"Мениджър продажби"Този пример добави резултатите към файла, който беше създаден (и попълнен) в предишния пример.