Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wyeksportować wyniki zapytania do pliku CSV w SQLcl (Oracle)

Jeśli używasz SQLcl do uruchamiania zapytań w bazie danych Oracle, możesz użyć SPOOL polecenie, aby wyeksportować wyniki zapytania do pliku CSV.

Przykład

Oto przykład, który eksportuje całą tabelę:

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

Oto, co zrobił, linia po linii:

  1. Moja pierwsza linia ustawia SQLFORMAT do csv . Zapewnia to, że dane wyjściowe są faktycznie oddzielone przecinkami. Gdybym tego nie zrobił, mógłbym skończyć z plikiem z .csv rozszerzeniem, ale z treścią, która nie jest oddzielona przecinkami.
  2. Druga linia to miejsce, w którym używamy SPOOL polecenie, aby określić, gdzie zostanie zapisany plik wyjściowy. Pamiętaj, aby zmienić /Users/barney/data/countries.csv część do lokalizacji w systemie.
  3. W trzecim wierszu uruchomiłem zapytanie SQL – wyniki, dla których eksportuję. W tym przypadku wyeksportowałem całe countries stół.
  4. Następnie przekręciłem SPOOL wyłączony.
  5. Wreszcie skończyłem ustawiając SQLFORMAT powrót do ansiconsole (którego używałem przed ustawieniem go na csv ).

Oto jak wygląda wynikowy plik:

"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. 

Usuń nagłówki kolumn

Możesz usunąć nagłówki kolumn za pomocą 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

Wynik:

"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. 

W tym przypadku zmieniłem HEADINGS ponownie po wyeksportowaniu pliku.

Usuń opinię

Możesz usunąć X rows selected z 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

Wynik:

"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

Tutaj włączyłem FEEDBACK ponownie po wyeksportowaniu pliku.

Wiele stołów

W tym przykładzie eksportuję wyniki nieco bardziej złożonego zapytania, które łączy dwie tabele:

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

Wynikowy plik:

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"

Dołącz wyniki

Domyślnie SPOOL używa REPLACE , który zastępuje plik, jeśli już istnieje.

Możemy jednak użyć APPEND argument, aby dołączyć wyniki do pliku.

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

Wynikowy plik:

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"

Ten przykład dołączył wyniki do pliku, który został utworzony (i wypełniony) w poprzednim przykładzie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00907:brak prawego nawiasu

  2. Polityka poprawek

  3. Bezpieczeństwo baz danych w Oracle

  4. Oracle SQL, połącz wiele kolumn + dodaj tekst

  5. Konwertuj VARCHAR2 na liczbę