Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да експортирате резултатите от заявката в CSV файл в SQLcl (Oracle)

Ако използвате SQLcl за изпълнение на заявки към Oracle Database, тогава можете да използвате SPOOL команда, за да експортирате резултатите от вашата заявка в CSV файл.

Пример

Ето пример, който експортира цяла таблица:

SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole 

Ето какво направи, ред по ред:

  1. Първият ми ред задава SQLFORMAT към csv . Това гарантира, че изходът всъщност е разделен със запетая. Ако не го направя, бих могъл да получа файл с .csv разширение, но със съдържание, което не е разделено със запетая.
  2. Вторият ред е мястото, където използваме SPOOL команда, за да посочите къде ще бъде записан изходният файл. Не забравяйте да промените /Users/barney/data/countries.csv част до местоположение във вашата система.
  3. На третия ред изпълних SQL заявката – резултатите, за които експортирам. В този случай експортирах целите countries маса.
  4. След това обърнах SPOOL изключено.
  5. Накрая завърших, като зададох 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,"Мениджър продажби"

Този пример добави резултатите към файла, който беше създаден (и попълнен) в предишния пример.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в SQL Oracle LEFT JOIN и SUBQUERY:ORA-00905:липсва ключова дума

  2. Към какво съпоставя Hibernate булев тип данни, когато се използва база данни на Oracle по подразбиране?

  3. Вземете броя на дните между две дати в Oracle, включително датите

  4. Създайте критерии за хибернация, за да се присъедините към една и съща таблица два пъти - опитах 2 подхода с 2 грешка в разликата

  5. FNDCPASS &AFPASSWD