Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
Всем привет! Помогите, пожалста, со spoolом.
Есть такой скрипт, запускается из Девелопера
BEGIN
FOR SB_NAME IN (
SELECT 'IVAN' a FROM dual UNION SELECT 'PETYA' a FROM dual UNION SELECT 'VASYA' a FROM dual )
LOOP
FOR PS_DATA IN (
SELECT DISTINCT
sb.short_name, dc.name, q.number
FROM(
SELECT
sm.ssubs_id s_subs_id, sm.number number
FROM SUM_DATA SM WHERE
SM.ROWID IN (SELECT ROWID FROM SUM_DATA SM WHERE SM.SSUBS_ID = 1696 AND SM.DR_ID = 68552)
OR SM.ROWID IN (SELECT ROWID FROM SUM_DATA SM WHERE SM.SSUBS_ID = 1664 AND SM.DR_ID = 59813)
) Q, subs sb, dirs dc
WHERE dc.drcl_id = q.s_drcl_id
AND q.s_subs_id = sb.subs_id AND sb.short_name = sb_name.a
ORDER BY sb.short_name, dc.NAME)
LOOP
dbms_output.put_line( PS_DATA.short_name||' '|| PS_DATA.NAME||' '|| PS_DATA.s_b_number);
END LOOP;
END LOOP;
END;

Нужно выводить в файлы, но имя фала должно быть, например, IVAN_date.csv, VASYA_date.csv и т.д. Т.е. имя файла должно браться из первого курсора.
Смысл в том, что выводимый объем слишком велик для просмотра в екселе, а его нужно как-то анализировать, поэтому желательно разбить на логичные составляющие.
Спасибо!
18 июн 08, 09:33    [5813147]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
StarWoofy
Member

Откуда: Moscow
Сообщений: 1005
S966
объем слишком велик для просмотра в екселе

Апплодирую стоя.
:)
18 июн 08, 09:45    [5813212]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
StarWoofy
S966
объем слишком велик для просмотра в екселе

Апплодирую стоя.
:)

Ладони не отбей.. интересно чем вызван сей смех? Это отчеты. Одно из полей нужно для анализа. Люди работают в екселе. Сейчас выводится в файл размером 50 гигов и ессно оне мучаются.. сделано было кем-то очдавно. Решил помочь, а как сделать пока не знаю..
18 июн 08, 09:49    [5813231]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
stax..
Guest
так не получится
надо создать два скрипта
первый будет управлять спулом
второй выводить в него по параметру
зы
в древних версиях было ограничение на dbms_output
если грубо 1 млн байт
.....
stax
18 июн 08, 09:55    [5813257]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1780
Видимо, очдавно не думал о возможном росте объема выборки. Сам по себе отчет 50Г - уже ужас, да еще и в экселе...
18 июн 08, 09:57    [5813273]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
stax..
так не получится
надо создать два скрипта
первый будет управлять спулом
второй выводить в него по параметру
зы
в древних версиях было ограничение на dbms_output
если грубо 1 млн байт
.....
stax


ну... т.е. через бантик? А как передать имя? DBMS поставил просто что бы посмотреть что выводит. Да и на девелопере на зациклен. Можно SQL+. Но как? Может у кого было что-то подобное. Я по архивам полазил, но ничего не нашел похожего(совсем похожего, что б тупо скопировать )))
18 июн 08, 10:00    [5813293]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
Sheriffua
Member

Откуда: г. Киев
Сообщений: 1223
S966
StarWoofy
S966
объем слишком велик для просмотра в екселе

Апплодирую стоя.
:)

Ладони не отбей.. интересно чем вызван сей смех? Это отчеты. Одно из полей нужно для анализа. Люди работают в екселе. Сейчас выводится в файл размером 50 гигов и ессно оне мучаются.. сделано было кем-то очдавно. Решил помочь, а как сделать пока не знаю..


Кстати, вроде в Office 2007 снято ограничение в Екселе на вывод строк.
18 июн 08, 10:02    [5813303]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
jan2ary
Видимо, очдавно не думал о возможном росте объема выборки. Сам по себе отчет 50Г - уже ужас, да еще и в экселе...

да я сам его обнаружил только месяц назад. Подумал, что им и не пользуются, т.к. практически невозможно нормально открыть, тем боле, что компы с маленькой памятью стоят. - Нет пользуются - пол дня ждут пока в тексте откроется. потом рубят на много частей и в ексел.. Там девочки сидят..
18 июн 08, 10:03    [5813306]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
stax..
Guest
S966

ну... т.е. через бантик? А как передать имя? DBMS поставил просто что бы посмотреть что выводит. Да и на девелопере на зациклен. Можно SQL+. Но как? Может у кого было что-то подобное. Я по архивам полазил, но ничего не нашел похожего(совсем похожего, что б тупо скопировать )))

если грубо то да
мож поможет
http://www.geocities.com/luzanovp/sp_vars.html
зы
параметры в скріптах плюса &1,&2 и тд
......
stax
18 июн 08, 10:17    [5813381]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
SkyW0rker
Member

Откуда:
Сообщений: 13
column report_name new_value spool_name
select 'output.txt' report_name from dual;
spool &spool_name
select * from dual;
spool off
exit
?
18 июн 08, 10:18    [5813384]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
stax..
S966

ну... т.е. через бантик? А как передать имя? DBMS поставил просто что бы посмотреть что выводит. Да и на девелопере на зациклен. Можно SQL+. Но как? Может у кого было что-то подобное. Я по архивам полазил, но ничего не нашел похожего(совсем похожего, что б тупо скопировать )))

если грубо то да
мож поможет
http://www.geocities.com/luzanovp/sp_vars.html
зы
параметры в скріптах плюса &1,&2 и тд
......
stax

черт! Какой хороший страница. )) Спасибо. Счас почитаю..
18 июн 08, 10:21    [5813406]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
как убрать служебную информацию типа..
прежний 27: AND q.s_subs_id = sb.subs_id AND sb.short_name = '&company'
новый 27: AND q.s_subs_id = sb.subs_id AND sb.short_name = 'TTT'

где-то фитал в конфе, но уже час пытаюсь найти - не могу.. Это что-то типа служебной инфы?
20 июн 08, 12:03    [5825373]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Срочно почно почитать доку про SQL*Plus, в частности про команду SET
20 июн 08, 12:05    [5825387]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
AndrK
Member

Откуда: Златоуст
Сообщений: 418
sql*plus manual
set ver[ify] off
20 июн 08, 12:06    [5825406]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
ок )) еще вопрос..
в качестве параметра передается название из двух слов. - @script1.sql 'PETYA 5'
в @script1.sql - я определяю define company="&1" - Берется только PETYA, без 5.
И Ессно ничего не находит.. Как быть??
20 июн 08, 12:35    [5825641]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
stax..
Guest
S966
ок )) еще вопрос..
в качестве параметра передается название из двух слов. - @script1.sql 'PETYA 5'
в @script1.sql - я определяю define company="&1" - Берется только PETYA, без 5.
И Ессно ничего не находит.. Как быть??

мож от ОС зависеть
файл test.sql
prompt &&1
define company="&1"
prompt &&company

сам тест
SQL>  @D:\TMP\test.sql "Петя 5";
Петя 5
Петя 5
SQL> @D:\TMP\test.sql 'Петя 5';
Петя 5
Петя 5
SQL> 
.....
stax
20 июн 08, 12:47    [5825731]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
резюме-то какое? Попробовал тупо с двумя кавычками select '@script1.sql '|| ''''''||name ||'''''' from company_name
@script1.sql "VASYA 5"
- ваще неичего не берет..
20 июн 08, 13:07    [5825918]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
stax..
Guest
S966
резюме-то какое? Попробовал тупо с двумя кавычками select '@script1.sql '|| ''''''||name ||'''''' from company_name
@script1.sql "VASYA 5"
- ваще неичего не берет..

файл t.sql
spool d:\tmp\ttt.sql;
select '@d:\tmp\test "'||name||'"' from company_name ;
spool off
@@ttt.sql

результат
SQL> @d:\tmp\t.sql;
@d:\tmp\test "Петя 5"
@d:\tmp\test "Петя 4"
Петя 5
Петя 5
Петя 4
Петя 4
SQL> 
.....
stax
20 июн 08, 13:26    [5826114]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
черт.. что-то не пойму..
в новигаторе в коммандном окне набираю

SQL> define company="&1"
SQL> prompt &company
VASYA 5
SQL> spool &company
Started spooling to c:\program files\plsql developer\VASYA 5.lst
SQL> spool off
Stopped spooling to c:\program files\plsql developer\VASYA 5.lst

нормально.
в скрипте на "VASYA 5"

spool &&company..txt;
т.е. на spool VASYA 5.txt регается

SP2-0768: ═хфюяєёЄшьр  ъюьрэфр SPOOL
╤шэЄръёшё: SPOOL { <Їрщы> | OFF | OUT }
уфх <Їрщы> - ¤Єю шь _Їрщыр[.ext] [CRE[ATE]|REP[LACE]|APP[END]]

т.е. получается что не может создать файл VASYA 5.txt. Хотя в запросе
AND sb.short_name = '&&company' выбирает именно по "VASYA 5"

Братцы. если не устали еще отвечать, помогите.. ((
20 июн 08, 15:36    [5827386]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
S966
черт.. что-то не пойму..
в новигаторе в коммандном окне набираю

используйте SQL PLUS .... а то будете долго еще мучаться ))))
20 июн 08, 16:06    [5827685]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
дык через него-то и делаю.. просто решил проверить через девелопер - внем работает.
А через sql+ нет.
20 июн 08, 16:11    [5827732]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
stax..
Guest
S966
дык через него-то и делаю.. просто решил проверить через девелопер - внем работает.
А через sql+ нет.

самое простое заменіиь пробелы напр на подчеркивание

SQL> select '@d:\tmp\test "'||replace(name,' ','_')||'"' from company_name;

'@D:\TMP\TEST"'||REPLACE(NAME,'','_
-----------------------------------
@d:\tmp\test "Петя_5"
@d:\tmp\test "Петя_4"

SQL> 
ps
заодно длину имени файла проконтролируйте
....
stax
20 июн 08, 16:19    [5827803]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
даа... так я уже делал.. с заменой работает. Но так делать нельзя. Есть свои моменты - существующее название может быть таким же, т.е. с "_" или "-" и т.д.
20 июн 08, 16:25    [5827880]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
stax..
Guest
S966
даа... так я уже делал.. с заменой работает. Но так делать нельзя. Есть свои моменты - существующее название может быть таким же, т.е. с "_" или "-" и т.д.

существующие "_" меняйте на "__", а пробел на "_"

  1* select replace(replace('Вася__ 5','_','__'),' ','_') from dual
SQL> /

REPLACE(RE
----------
Вася_____5

....
stax
20 июн 08, 16:36    [5827984]     Ответить | Цитировать Сообщить модератору
 Re: Опять про spool  [new]
S966
Member

Откуда:
Сообщений: 40
)). да уж.. вариантов масса.. Но все же, почему не работает с пробелом?
20 июн 08, 16:52    [5828105]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить