У меня есть таблица t1
, которая содержит два столбца, т.е. company
и employee name
. Я хочу создать текстовые файлы для каждой компании, и файлы должны содержать сотрудников, работающих в этих компаниях.
Любые предложения о том, как это сделать, будут оценены.
CREATE TABLE T1(COMPANY VARCHAR2(10) , ENAME VARCHAR2(100));
INSERT INTO T1
SELECT 'A' , 'SSS' FROM DUAL
UNION
SELECT 'B' , 'AAA' FROM DUAL
UNION
SELECT 'C' , 'FFF' FROM DUAL
UNION
SELECT 'A' , 'KKK' FROM DUAL
UNION
SELECT 'B' , 'LLL' FROM DUAL
UNION
SELECT 'C' , 'EEE' FROM DUAL
UNION
SELECT 'A' , 'UUU' FROM DUAL
UNION
SELECT 'B' , 'WWW' FROM DUAL
UNION
SELECT 'C' , 'TTT' FROM DUAL
UNION
SELECT 'A' , 'MMM' FROM DUAL;
commit;
Ожидаемые результаты:
A.txt
KKK
MMM
SSS
UUU
B.txt
AAA
LLL
WWW
C.txt
EEE
FFF
TTT
Спасибо
Спасибо, я попробовал то, что вы предложили, и я получаю данные на v_out.sql, но файлы не генерируются. я получаю сообщение об ошибке в конце v_out.sql
ошибка
Elapsed: 00:00:00.02
not spooling currently
SP2-0734: unknown command beginning "Elapsed: 0..." - rest of line ignored.
запрос
set termout off
set echo off
set feedback off
spool v_out.sql
select * from
(
with files as ( select distinct company from t1 )
select
'set termout off '||chr(10)||
'set serveroutput on '||chr(10)||
'set echo off '||chr(10)||
'set feedback off '||chr(10)||
'spool '||company||'.dat'||chr(10)||
'select * from t1 where company = '''||company||''';'||chr(10)||
'spool off'
from files
);
/
spool off
@v_out.sql;
что-то не так в этом запросе?