SQLclを使用してOracleDatabaseに対してクエリを実行している場合は、SPOOL
を使用できます。 クエリ結果をCSVファイルにエクスポートするコマンド。
例
テーブル全体をエクスポートする例を次に示します。
SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
行ごとに次のようになりました:
- 最初の行で
SQLFORMAT
を設定しますcsv
へ 。これにより、出力が実際にコンマで区切られるようになります。これを行わないと、.csv
のファイルになってしまう可能性があります 拡張機能ですが、カンマで区切られていないコンテンツを使用します。 - 2行目は、
SPOOL
を使用する場所です。 出力ファイルが書き込まれる場所を指定するコマンド。必ず/Users/barney/data/countries.csv
を変更してください システム上の場所の一部です。 - 3行目で、SQLクエリを実行しました。これはエクスポートする結果です。この場合、
countries
全体をエクスポートしました テーブル。 - 次に、
SPOOL
をオンにしました オフ。 - 最後に、
SQLFORMAT
を設定して終了しました。ansiconsole
に戻る (これは、csv
に設定する前に使用していたものです。 。
結果のファイルは次のようになります。
"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.
列ヘッダーの削除
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","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.
この場合、私は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","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
ここで、FEEDBACK
をオンにしました ファイルをエクスポートした後、元に戻します。
複数のテーブル
この例では、2つのテーブルを結合するもう少し複雑なクエリの結果をエクスポートします。
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,"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"
結果を追加
デフォルトでは、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,"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"
この例では、前の例で作成(および入力)されたファイルに結果を追加しました。