Ако използвате 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,"Мениджър продажби"Този пример добави резултатите към файла, който беше създаден (и попълнен) в предишния пример.