Когато отправяте заявка към Oracle Database, можете да използвате SPOOL
команда за експортиране на резултатите от вашата заявка в текстов файл, когато използвате SQLcl.
Пример
Ето пример, който експортира цяла таблица:
SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off;
Ето какво направи, ред по ред:
- Първият ред използва
SPOOL
команда, за да посочите къде ще бъде записан изходният файл. Не забравяйте да промените/Users/barney/data/regions.txt
до местоположение във вашата система и подходящо име на файл. - На втория ред изпълних SQL заявката – резултатите, за които експортирам. В този случай експортирах целите
regions
маса. - След това обърнах
SPOOL
изключено.
Ето как изглежда полученият файл:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa 4 rows selected.
В моя случай моят SQLFORMAT
беше зададен на ansiconsole
, и така изходът отразява това.
Можете да промените това във всеки подходящ формат.
Ето пример за експортиране на резултата във формат, който може да се използва като файл за импортиране с sql*loader:
SET SQLFORMAT loader
SPOOL '/Users/barney/data/regions_loader.txt';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole
Резултат:
1|"Europe"| 2|"Americas"| 3|"Asia"| 4|"Middle East and Africa"| 4 rows selected.
В този случай аз също нулирам SQLFORMAT
обратно към ansiconsole
веднъж SPOOL
операцията беше завършена.
Премахване на обратна връзка
Можете да премахнете X rows selected
с SET FEEDBACK off
:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt';
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Резултат:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
В този случай обърнах FEEDBACK
отново след експортиране на файла.
Добавяне на резултатите
По подразбиране SPOOL
използва REPLACE
, който замества файла, ако вече съществува.
Въпреки това можем да използваме APPEND
аргумент за добавяне на резултатите към файла.
Пример:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Резултатен файл:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Този пример добави резултатите към файла, който беше създаден (и попълнен) в предишния пример. Това доведе до дублиране на резултата във файла.
Презаписване на съществуващия файл
Можем да използваме REPLACE
за да презапишете съществуващия файл с резултатите от нова заявка:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Резултатен файл:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Както бе споменато, REPLACE
е настройката по подразбиране, така че бихме могли просто да пропуснем този аргумент напълно.