Jika Anda menggunakan SQLcl untuk menjalankan kueri terhadap Oracle Database, maka Anda dapat menggunakan SPOOL perintah untuk mengekspor hasil kueri Anda ke file CSV.
Contoh
Berikut ini contoh yang mengekspor seluruh tabel:
SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole Inilah yang dilakukannya, baris demi baris:
- Baris pertama saya menyetel
SQLFORMATkecsv. Ini memastikan bahwa output sebenarnya dipisahkan koma. Jika saya tidak melakukan ini, saya bisa mendapatkan file dengan.csvekstensi, tetapi dengan konten yang tidak dipisahkan koma. - Baris kedua adalah tempat kita menggunakan
SPOOLperintah untuk menentukan di mana file output akan ditulis. Pastikan untuk mengubah/Users/barney/data/countries.csvbagian ke lokasi di sistem Anda. - Pada baris ketiga, saya menjalankan kueri SQL – hasil yang saya ekspor. Dalam hal ini, saya mengekspor seluruh
countriesmeja. - Selanjutnya saya putar
SPOOLmati. - Akhirnya, saya selesai dengan mengatur
SQLFORMATkembali keansiconsole(yang saya gunakan sebelum menyetelnya kecsv).
Berikut tampilan file yang dihasilkan:
"COUNTRY_ID","COUNTRY_NAME","REGION_ID""AR","Argentina",2"AU","Australia",3"BE","Belgia",1"BR",,"Brasil",2 "CA","Kanada",2"CH",,"Swiss",1"CN",,"China",3"DE",,"Jerman",1"DK",,"Denmark",1"EG",," Mesir",4"FR",,"Prancis",1"HK",,"HongKong",3"IL",,"Israel",4"IN",,"India",3"IT",,"Italia",1" JP", "Jepang",3"KW",,"Kuwait",4"MX",,"Meksiko",2"NG",,"Nigeria",4"NL",,"Belanda",1"SG",,"Singapura ",3"UK",,"Britania Raya",1"AS",,"Amerika Serikat",2"ZM",,"Zambia",4"ZW",,"Zimbabwe",425 baris dipilih.
Hapus Tajuk Kolom
Anda dapat menghapus tajuk kolom dengan 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 Hasil:
"AR",,"Argentina",2"AU",,"Australia",3"BE",,"Belgia",1"BR",,"Brasil",2"CA",,"Kanada",2"CH ","Swiss",1"CN",,"China",3"DE",,"Jerman",1"DK",,"Denmark",1"EG",,"Mesir",4"FR",,"Prancis" ,1"HK",,"HongKong",3"IL",,"Israel",4"IN",,"India",3"IT",,"Italia",1"JP",,"Jepang",3"KW" ,"Kuwait",4"MX",,"Meksiko",2"NG",,"Nigeria",4"NL",,"Belanda",1"SG",,"Singapura",3"UK",,"Inggris Raya" ,1"AS",,"Amerika Serikat",2"ZM",,"Zambia",4"ZW",,"Zimbabwe",425 baris dipilih.
Dalam hal ini, saya mengubah HEADINGS hidupkan kembali setelah saya mengekspor file.
Hapus Masukan
Anda dapat menghapus X rows selected dengan 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 Hasil:
"AR",,"Argentina",2"AU",,"Australia",3"BE",,"Belgia",1"BR",,"Brasil",2"CA",,"Kanada",2"CH ","Swiss",1"CN",,"China",3"DE",,"Jerman",1"DK",,"Denmark",1"EG",,"Mesir",4"FR",,"Prancis" ,1"HK",,"HongKong",3"IL",,"Israel",4"IN",,"India",3"IT",,"Italia",1"JP",,"Jepang",3"KW" ,"Kuwait",4"MX",,"Meksiko",2"NG",,"Nigeria",4"NL",,"Belanda",1"SG",,"Singapura",3"UK",,"Inggris Raya" ,1"US",,"Amerika Serikat",2"ZM",,"Zambia",4"ZW",,"Zimbabwe",4
Di sini, saya mengubah FEEDBACK hidupkan kembali setelah mengekspor file.
Beberapa Tabel
Dalam contoh ini, saya mengekspor hasil kueri yang sedikit lebih kompleks yang menggabungkan dua tabel:
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 File yang dihasilkan:
145,"John",,"Russell",14000,"Manajer Penjualan"146,"Karen",,"Mitra",13500,"Manajer Penjualan"201,"Michael",,"Hartstein",13000,"Manajer Pemasaran "147,"Alberto",,"Errazuriz",12000,"Manajer Penjualan"205,"Shelley",,"Higgins",12000,"Manajer Akuntansi"108,"Nancy",,"Greenberg",12000,"Manajer Keuangan"Tambahkan Hasil
Secara default,
SPOOLmenggunakanREPLACE, yang menggantikan file jika sudah ada.Namun, kita dapat menggunakan
APPENDargumen untuk menambahkan hasil ke file.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 onFile yang dihasilkan:
145,"John",,"Russell",14000,"Manajer Penjualan"146,"Karen",,"Mitra",13500,"Manajer Penjualan"201,"Michael",,"Hartstein",13000,"Manajer Pemasaran "147,"Alberto",,"Errazuriz",12000,"Manajer Penjualan"205,"Shelley",,"Higgins",12000,"Manajer Akuntansi"108,"Nancy",,"Greenberg",12000,"Manajer Keuangan"168 ,"Lisa",,"Ozer",11500,"Perwakilan Penjualan"174,"Ellen",,"Abel",11000,"Perwakilan Penjualan"114,"Den",,"Raphaely",11000,"Manajer Pembelian"148," Gerald","Cambrault",11000,"Manajer Penjualan"Contoh ini menambahkan hasil ke file yang dibuat (dan diisi) pada contoh sebelumnya.